Php 为什么我的代码只能在一台服务器上工作,而不能在另一台服务器上工作?
下面的代码在我的大学服务器上运行良好,但在我付费的私有服务器上不起作用 问题在于:Php 为什么我的代码只能在一台服务器上工作,而不能在另一台服务器上工作?,php,mysql,Php,Mysql,下面的代码在我的大学服务器上运行良好,但在我付费的私有服务器上不起作用 问题在于: header("Location: products.php"); } } else { echo "Invalid username or password!"; } 如果我输入了错误的名称/密码,代码将按预期进行回音。 但是如果用户正确地输入了他们的详细信息,那么什么也不会发生 我是PHP新手,所以我不知道从哪里开始进行故障排除,但我尝
header("Location: products.php");
}
} else {
echo "Invalid username or password!";
}
如果我输入了错误的名称/密码,代码将按预期进行回音。
但是如果用户正确地输入了他们的详细信息,那么什么也不会发生
我是PHP新手,所以我不知道从哪里开始进行故障排除,但我尝试用echo替换“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>
-尝试使用元标记刷新-
我建议您查看日志,这可能是任何类型的错误。找到一些日志并将它们粘贴到您的问题中。您的服务器和其他服务器的URL是否可能具有不同的结构?例如,通过这种方式从/mysite/index.php重定向到/mysite/products.php可能会给您带来麻烦,而您可能希望它位于/products.php上。为什么您要同时使用mysqli.*
和mysql.*
函数?此外,您还非常容易受到SQL注入攻击。缩进代码使其可读也有助于发现逻辑错误。将会话_start()移到文档顶部。对不起,伙计们,我对PHP非常熟悉!如何查看正在发生的事情的日志?firefox和chromes inspect元素没有显示任何内容。我试过@jim他们提到的日志都在服务器上。假设服务器基于*nix,请尝试在命令提示符下执行locate php.log
。该日志文件通常是您要查看的位置。再次假设*nix,如果您还没有了解tail
命令,请了解tail-f
。
<?php
if($user == $dbusername && $md5pass == $dbpassword)
{
session_start();
$_SESSION['sess_user']=$user;
?>
<html>
<head>
<META http-equiv="refresh" content="5;URL=/<?php echo 'products.php'; ?>">
</head>
<body>
</body>
</html>
<?php
}
?>