该config.php似乎并没有工作

问题描述:

在home.html文件中,我有一个div,当它被点击时,它会显示登录表单,由要登录的用户填写。填写完表单后,表单的配置应该将其返回到home.html文件。该config.php似乎并没有工作

我遇到的问题是,当我尝试填充用户名和密码字段的形式并提交时,浏览器在config-haslogin.php中停止空白,而不是直接回到home.html文件。

结果是一样的,当我试图用错误的用户名和密码填写它。

配置,haslogin.php

<?php @session_start(); 
$_SESSION['id']= 0; 
?> 


<?php 
error_reporting(E_ALL^E_NOTICE);  
mysql_connect("mysql.com","usename","password") or die("cannot connect"); 
mysql_select_db("mytable") or die("Fail"); 

$myemail= $_POST['email']; 
$mypassword= $_POST['password']; 

$sql= "SELECT * FROM user WHERE email='".$myemail."' and password='".$mypassword."'"; 
$result=mysql_query($sql); 
$count=mysql_num_rows($result); 
if($count==1) 
{ 
echo "Login successful"; 
echo '<script>window.location="index.html";</script>'; 
} 
?> 
+0

如果您收到空白页面,请始终首先启用错误报告。或者,查看Web服务器的错误日志。 – 2014-09-02 06:31:24

+0

错误抑制和不推荐的扩展,哦,我的! – Phil 2014-09-02 06:32:55

+0

哦对。 'mysql_ *'函数正在被弃用,并将从PHP的未来版本中删除。不要使用它们来编写新代码,而是使用'mysqli_ *'或PDO。 – 2014-09-02 06:34:09

这是错误的:

echo "Login successful"; 
'<script>window.location="index.html";</script>'; 

你缺少echo语句有:

echo "Login successful"; 
echo '<script>window.location="index.html";</script>'; 

更多,但没有严重,代码中有问题的部分:

@session_start(); 

抑制错误消息不能解决问题,它只是创建新的。当发生错误时,您将不会注意到,如果您有适当的错误消息,只需几分钟,就会花费数小时寻找解决方案。

error_reporting(E_ALL^E_NOTICE); 

这只是房租的一半。它只定义显示哪些错误级别,而不是它们是否显示。如果错误信息被您的主机禁用,您必须执行ini_set("display_errors", true);,否则您什么也看不到。

您的SQL代码很容易受到SQL注入的影响。我只需在您的电子邮件字段中输入“[email protected]” - 并在不知道密码的情况下登录。您应该切换到mysqli_*或PDO并使用准备好的statemens进行查询。

使用正确的错误报告。不要只使用:

or die("cannot connect"); 

代替继电器实际的错误信息,所以你知道为什么它没有工作:

or die("Connection error: " . mysql_error()); 

使用该查询后,也让你知道为什么一个查询失败:

if ($result == false) echo "Query failed: " . mysql_error(); 

PDO和MySQLi具有类似的错误报告功能。使用它们。

echo '<script>window.location="index.html";</script>'; 

您不应该使用JavaScript进行重定向。您永远不知道客户端是否启用了JavaScript或者甚至无法启用JavaScript。做重定向正确的方法是header()功能:

header("Location: index.html"); 
exit(); 

注意header()如果之前绝对没有输出才会工作。甚至没有空白,换行或其他空格。

+0

不错的皮卡。用逗号代替分号也会起作用。 – Phil 2014-09-02 06:33:36

+0

它会,但对初学者来说会更难理解。 – 2014-09-02 06:34:39

+1

从根本上来说,不好的代码应该向初学者解释,还有很多其他原因,为什么不应该这样写代码。 – 2014-09-02 06:35:42