【发布时间】:2014-09-04 18:40:23
【问题描述】:
以下代码在我的大学服务器上运行良好,但不适用于我付费购买的私人服务器。
问题出在:
header("Location: products.php");
}
} else {
echo "Invalid username or password!";
}
如果我输入了错误的名称/密码,代码会按预期回显。 但是,如果用户正确输入了他们的详细信息,则什么都不会发生!
我是 PHP 新手,所以我不知道从哪里开始进行故障排除,但我尝试替换“header("Location: products.php");”有回声,但仍然无济于事。
我还考虑到 PHPmyadmin 服务器可能是不同的版本,或者字符编码可能会导致一些问题。
这是完整的代码。
任何帮助将不胜感激!
<?php
if(isset($_POST["submit"])){
$user=$_POST['user'];
$pass=$_POST['pass'];
$username = "";
$password = "";
$hostname = "";
$md5pass = md5($pass);
//connection to the database
$dbhandle = mysqli_connect($hostname, $username, $password);
$con=mysql_connect($hostname, $username, $password) or die(mysql_error());
$select=mysql_select_db("l1233156", $con) or die("cannot select DB");
$query=mysql_query("SELECT * FROM login WHERE username='".$user."' AND password='".$md5pass."'");
$numrows=mysql_num_rows($query);
if($numrows!=0)
{
while($row=mysql_fetch_assoc($query))
{
$dbusername=$row['username'];
$dbpassword=$row['password'];
}
if($user == $dbusername && $md5pass == $dbpassword)
{
session_start();
$_SESSION['sess_user']=$user;
/* Redirect browser */
header("Location: products.php");
}
} else {
echo "Invalid username or password!";
}
}
?><!doctype html>
<html>
<head>
<title>Login</title>
<link rel="stylesheet" href="main.css"/>
</head>
<body>
<div class="center">
<p><a href="register.php">Register</a> | <a href="login.php">Login</a></p>
<h3>Login Form</h3>
<form action="" method="POST">
Username: <input type="text" name="user"><br />
Password: <input type="password" name="pass"><br />
<input type="submit" value="Login" name="submit" />
</form>
</div>
</body>
</html>
编辑: 这是我设法从错误日志中获取的内容。
[2014 年 7 月 14 日星期一 10:30:34.134187] [autoindex:error] [pid 28718:tid 140153014126336] [client 86.153.7.34:55032] AH01276:无法提供目录 /home/joesadmin123/public_html/productreviews/:否匹配 DirectoryIndex (index.html.var,index.htm,index.html,index.xhtml,index.wml,index.perl,index.pl,index.plx,index.ppl,index.cgi,index.jsp,index .js,index.jp,index.php4,index.php3,index.php,index.phtml,index.shtml,default.htm,default.html,home.htm,index.php5,Default.html,Default.htm ,home.html,welcome.html) 找到,并且选项指令禁止服务器生成的目录索引
【问题讨论】:
-
我建议您查看日志,这可能是任何类型的错误。找到一些日志并将它们粘贴到您的问题中。您的服务器的 URL 和另一个服务器的 URL 是否可能具有不同的结构?例如,这种从 /mysite/index.php 重定向到 /mysite/products.php 的方式可能会给您带来麻烦,而您可能希望它位于 /products.php 上。
-
你为什么要同时使用
mysqli_*和mysql_*函数?此外,您对 SQL 注入攻击持开放态度。将代码缩进为人类可读的代码也可以帮助您发现逻辑错误。 -
将 session_start() 移到文档顶部。
-
对不起,我对 PHP 非常陌生!如何查看正在发生的事情的日志? firefox 和 chromes 检查元素不显示任何内容。我已经试过了@jim
-
他们所说的日志在服务器本身。假设服务器是基于 *nix 的,请尝试在命令提示符下执行
locate php.log。该日志文件通常是您要查看的地方。同样,假设 *nix,如果您还没有了解tail命令,尤其是tail -f。