执行php代码后获得白色屏幕


getting white screen after executing php code

嗨,我正在做一个简单的php注册。但每次我提交注册页面时,我都会得到一个空白屏幕,没有错误,没有显示。

我的php文件中的代码是:

<?php
if($_SERVER['REQUEST_METHOD']=="POST"){
$IP = //my hostname
$dbuser = "my user id";
$conn = new mysqli_connect($IP, $dbuser, "","my databse name");
if(! $conn )
{
  die('Could not connect: ' . mysqli_error());
}
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];
$address = $_POST['address'];

$query = "SELECT email FROM user where email='".$email."'";
$result = mysqli_query($conn,$query);
$numResults = mysqli_num_rows($result);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) // Validate email address
        {
            $message =  "Invalid email address please type a valid email!!";
        }

        elseif($numResults>=1)
        {
            $message = $email." Email already exist!!";
        }

else
        {
            mysqli_query("(insert into user(name,phone_number, email,pass1, pass2, address) values
            ('".$name."','".$phone."', '".$email."', '".$pass1."','".$pass2."','".$address."')");

            echo $message = "Signup Sucessfully!!";
        }

mysqli_close($conn);
}
print_r(error_get_last());
?>

建立连接没有问题,因为我在其他页面中使用这种连接方法,它们运行良好。此外,我应该指出,目前我正在cloud9上工作,我的mysql数据库在cloud9本身上。

请帮我解决这个麻烦。

您说您的第42行有插入查询。我想你是指这个查询:

mysqli_query("(insert into user(name,phone_number, email,pass1, pass2, address) values
        ('".$name."','".$phone."', '".$email."', '".$pass1."','".$pass2."','".$address."')");

由于您的错误显示"需要2个参数",因此此处缺少您的连接参数。你应该有这个:

mysqli_query($conn, "(insert into user(name,phone_number, email,pass1, pass2, address) values
        ('".$name."','".$phone."', '".$email."', '".$pass1."','".$pass2."','".$address."')");

将其放在脚本的第一行

ini_set('display_errors', '1');

这将在页面上显示错误,您将能够看到哪里出了问题。

也可以尝试"localhost"而不是IP地址

$conn = new mysqli_connect("localhost", $dbuser, "","my databse name");

如果数据库在同一台机器上,这可能会解决您的问题。

此外,您的代码非常不安全,将受到SQL注入的影响。请考虑以下行:

$email = $_POST['email'];
$query = "SELECT email FROM user where email='".$email."'";

基本上,您将用户传递的内容放入SQL语句中。如果他输入"OR 1;DROP TABLE user"怎么办。你会丢失所有的数据。

请阅读SQL注入并使用PDO:

  • http://en.wikipedia.org/wiki/SQL_injection
  • http://php.net/manual/fr/book.pdo.php