【问题标题】:PHP got a blank screen [duplicate]PHP有一个空白屏幕[重复]
【发布时间】:2018-01-21 04:15:29
【问题描述】:

这是我的代码。

<? 
  define('DB_HOST', 'localhost'); 
  define('DB_NAME', 'practice'); 
  define('DB_USER','root'); 
  define('DB_PASSWORD',''); 
  $con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); 
  $db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error()); 
  /* $ID = $_POST['user']; $Password = $_POST['pass']; */ 
  function SignIn() { 
      session_start(); //starting the session for user profile page 
      if(!empty($_POST['user'])) //checking the 'user' name which is from Sign-In.html, is it empty or have some text 
      { 
          $query = mysql_query("SELECT * FROM UserName where userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysql_error()); 
          $row = mysql_fetch_array($query) or die(mysql_error()); 
          if(!empty($row['userName']) AND !empty($row['pass'])) { 
             $_SESSION['userName'] = $row['pass']; echo "SUCCESSFULLY LOGIN TO USER PROFILE PAGE..."; 
          } else { 
             echo "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY..."; 
          } 
    } 
 } 
 if(isset($_POST['submit'])) { SignIn(); } 
 ?>

我尝试运行它,但它有一个空白屏幕。 PS。对不起我的英语,我是泰国人。

【问题讨论】:

  • 我投了反对票,因为如果我们无法阅读您的代码,我们将无法帮助您。 idownvotedbecau.se/unreadablecode
  • 如果您正在编写新代码,不要使用mysql_* 函数。它们又旧又坏,在 PHP 5.5 中被弃用(它太旧了,甚至不再接收安全更新),并在 PHP 7 中完全删除。将PDOmysqli_*prepared statements一起使用而参数绑定。详情请见stackoverflow.com/q/12859942/354577
  • 当您得到一个空白屏幕(但您并不期待它)时,请在发布问题之前检查您的错误日志。

标签: php sql


【解决方案1】:

您错过了 function SignIn() 的右大括号 },它会为此生成语法错误。

您的代码(有错误):

<?
  define('DB_HOST', 'localhost'); 
  define('DB_NAME', 'practice'); 
  define('DB_USER','root'); 
  define('DB_PASSWORD',''); 
  $con = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
  $db = mysql_select_db(DB_NAME, $con) or die("Failed to connect to MySQL: " . mysql_error());
  /* $ID = $_POST['user']; $Password = $_POST['pass']; */
  function SignIn() {
    session_start(); //starting the session for user profile page if(!empty($_POST['user'])) //checking the 'user' name which is from Sign-In.html, is it empty or have some text { $query = mysql_query("SELECT * FROM UserName where userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysql_error()); $row = mysql_fetch_array($query) or die(mysql_error()); if(!empty($row['userName']) AND !empty($row['pass'])) { $_SESSION['userName'] = $row['pass']; echo "SUCCESSFULLY LOGIN TO USER PROFILE PAGE..."; } else { echo "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY..."; } } } if(isset($_POST['submit'])) { SignIn(); } 
?>

下面的代码可以工作(有修复)

<?
  define('DB_HOST', 'localhost'); 
  define('DB_NAME', 'practice'); 
  define('DB_USER','root'); 
  define('DB_PASSWORD',''); 
  $con = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
  $db = mysql_select_db(DB_NAME, $con) or die("Failed to connect to MySQL: " . mysql_error());
  /* $ID = $_POST['user']; $Password = $_POST['pass']; */
  function SignIn() {
    session_start(); //starting the session for user profile page if(!empty($_POST['user'])) //checking the 'user' name which is from Sign-In.html, is it empty or have some text { $query = mysql_query("SELECT * FROM UserName where userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysql_error()); $row = mysql_fetch_array($query) or die(mysql_error()); if(!empty($row['userName']) AND !empty($row['pass'])) { $_SESSION['userName'] = $row['pass']; echo "SUCCESSFULLY LOGIN TO USER PROFILE PAGE..."; } else { echo "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY..."; } } } if(isset($_POST['submit'])) { SignIn(); }
  }
?>

为什么不为 PHP 代码启用错误以查看错误?下面是代码,如果你把文件放在文件的开头,就会开始显示错误。

<?php
  ini_set('display_errors', 'On');
  error_reporting(E_ALL);
?>

另外,session_start(); 应该始终位于页面的开头,而不是任何函数内部。

【讨论】:

  • 关于你关于 session_start() 的说法,我不同意,因为你还没有发送输出,所以它很可能在执行路径中很远。
  • 大括号在那里,有一组匹配的开始和结束
  • 它没有。为什么?我已经安装了PHP环境。它没有显示任何内容。
  • @Majid Fouladpour:我从来没有说过不能使用,我已经说过 session_start();应该在开始时调用以避免错误。根据我的经验,我看到很多网站都有通知,因为在使用session_start()之前抛出了一些错误
  • @CanakanZ 程序员:您正在使用 PHP 短标签,要使用它,您必须在 php.ini 中启用 short_open_tag。有关此配置的更多详细信息,请参阅php.net/manual/en/language.basic-syntax.phptags.php
猜你喜欢
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
  • 2021-06-12
相关资源
最近更新 更多