You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP登录代码运行后出现空白页面,请求技术帮助

解决你的PHP登录页面空白问题

嘿,别担心!页面空白大多是因为PHP的致命错误被默认隐藏了,咱们一步步来找出问题并修复它:

第一步:先开启错误显示,看到真正的问题

首先在你的代码最顶部加上这两行,这样就能看到具体的错误信息,而不是空白页面:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// 下面放你原来的代码
?>

这一步能帮你快速定位核心问题——我先提前告诉你,你的代码里用了已经被PHP彻底废弃的mysql_*函数,这在PHP7及以上版本里会直接导致致命错误,这就是页面空白的主要原因!

第二步:替换废弃的mysql_*函数为mysqli

mysql_connect、mysql_query这些函数在PHP7之后已经被移除了,必须换成mysqli或者PDO。下面是改成mysqli面向过程写法的代码,同时修复其他小问题:

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

define('DB_HOST', 'localhost');
define('DB_NAME', 'practice');
define('DB_USER','root');
define('DB_PASSWORD','');

// 使用mysqli连接数据库
$con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("Failed to connect to MySQL: " . mysqli_connect_error());
$db = mysqli_select_db($con, DB_NAME) or die("Failed to select database: " . mysqli_error($con));

function SignIn() {
    global $con; // 要在函数内使用外部的数据库连接变量,需要声明global
    session_start(); // 注意:session_start()必须放在任何输出之前,这里没问题
    
    if(!empty($_POST['user']) && !empty($_POST['pass'])) {
        // 用预处理语句防止SQL注入,这非常重要!
        $user = $_POST['user'];
        $pass = $_POST['pass'];
        
        $stmt = mysqli_prepare($con, "SELECT * FROM UserName WHERE userName = ? AND pass = ?");
        mysqli_stmt_bind_param($stmt, "ss", $user, $pass);
        mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_get_result($stmt);
        $row = mysqli_fetch_assoc($result);
        
        if($row) {
            $_SESSION['userName'] = $row['userName']; // 这里应该存用户名而不是密码,更合理
            echo "SUCCESSFULLY LOGIN TO USER PROFILE PAGE...";
        } else {
            echo "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY...";
        }
        
        mysqli_stmt_close($stmt);
    } else {
        echo "请输入用户名和密码!";
    }
}

if(isset($_POST['submit'])) {
    SignIn();
}
?>

第三步:修复其他细节问题

  • 把<?换成<?php:短标签在一些服务器环境中可能被禁用,用标准标签更安全。
  • 增加global $con:函数内部无法直接访问外部的数据库连接变量,必须声明global才能使用。
  • 修复SQL注入:直接把$_POST的值拼进SQL里会被黑客利用,预处理语句能彻底解决这个安全隐患。
  • 修正session存储的值:原来你存的是$row['pass'],这不合理,应该存用户名$row['userName']。
  • 完善空值判断:原来只判断了$_POST['user'],现在同时判断$_POST['pass'],避免空密码的情况。

最后测试

把修改后的代码上传到服务器,再测试登录,应该就能看到正常的提示信息,而不是空白页面了。如果还有问题,开启错误显示后会给出具体的错误提示,你可以根据提示继续排查~

内容的提问来源于stack exchange,提问作者ChanakanZ Programmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:42:46