【问题标题】:Why does my code work on one server, but not another?为什么我的代码可以在一台服务器上运行,而不能在另一台服务器上运行?
【发布时间】: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

标签: php mysql


【解决方案1】:

- 尝试使用元标记刷新 -

<?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
}
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2011-02-24
    • 1970-01-01
    • 2016-01-11
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多