繁体   English   中英

登录PHP表单时获取空白页

[英]Getting Blank page when logging in PHP form

我正在为我的项目创建一个新站点。 我已经建立了index.php页面,并设置了登录表单,并对log.php页面进行了表单操作。 同样在登录后,它也必须转到account.php页面。 它在本地服务器上正常工作。 但是当我上网时,登录时会在log.php页面中出现一个空白页面。 但是登录会发生,并且如果我通过在地址栏中键入来进入account.php,它会正常工作。 与“注册”页面也相同。

这是Log.php代码:

 <?php
include("connection.php");
extract($_POST);
$password=md5($_POST['password']);
$query=mysql_query("SELECT * from register WHERE username='$username' and password='$password'");
$numrows=mysql_num_rows($query);
if($numrows!=0)
{
    $info = mysql_fetch_array($query); 
    session_start();
    $_SESSION[username]=$username;
    $_SESSION[fname]=$info['fname'];
    $_SESSION[lname]=$info['lname'];
    $_SESSION[email]=$info['email'];
    header("location:account.php");
}
else
header("location:login.php?i=invalid");

?>

首先,逃避参数以防止SQL注入,考虑解析类似

'; DROP DATABASE xxxxx; 作为用户名;

另外,不要提取所有发布变量-仅提取那些您需要的变量(如果您在某个地方使用未初始化的变量或使用isset()检查,这很危险,因为有人可以创建一个。

针对您的问题:然后,检查文件中<?php之前的字符。 Sign <应该是代码中的第一个字节,因为如果您在服务器上缓冲了输出-您无法更改已发送的标头-我的意思是,当解析器看到php结构退出时,它将发送200 OK代码(而不是30x重定向)。 也许在文件开始处有不可见的BOM(一些特殊字符指示文件已用unicode编码),请尝试使用例如notepad ++进行编辑以进行检查。

它也与connection.php有关,因为其中包含该文件。

尝试打开error_reporting(E_ALL); 查看是否收到“标题已发送”错误。

使用$_SESSION['lname']而不是$_SESSION[lname]

不需要if($numrows!=0) ,可以是if($numrows)更干净(我认为)。

抱着试试你的惯例,如果你写SELECT * from ,那么你应该写SELECT * FROM

仅从数据库中获取您需要的字段,因此SELECT username,fname,lname,email* (您无需在此处输入密码,并且如果您向该表中添加了某些字段,则这些字段将不会在此处被检索)

您甚至不需要检查行数:

$numrows=mysql_num_rows($query); 
if($numrows!=0) {
$info = mysql_fetch_array($query);

只需检查一行是否已撤回:

$info = mysql_fetch_array($query);
if($info)
{

如果只使用$ info表的文本索引,则使用mysql_fetch_assoc而不是mysql_fetch_array(第二个也使用相同的数据创建索引0,1,2,依此类推。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM