PHP表单提交有问题

时间:2014-08-11 02:57:57

标签: php html mysql

我正在尝试使用HTML,PHP和MYSQL创建表单。我已经完成了大部分代码,但每当我向我的数据库发送POST以检查用户名/密码是否在DATABASE中时它会将我发送到空白页面。我不完全确定为什么。有什么建议吗?

</head>    
<body>
<section id="loginBox">
<h2>Login</h2>
    <form method="post" class="minimal" action="connect.php">
        <label for="username">
            Username:
            <input type="text" name="username" id="username" 
       placeholder="Username must be between 8 and 20 characters" required="required" />
    </label>
    <label for="password">
        Password:
        <input type="password" name="password" id="password" required="required" />
    </label>
    <input type="submit" class="btn-minimal" value="Log-in">Sign in</input>
</form>
</section>
 </body> 
</html> 

然后这是php代码我认为我的SignIn方法出错了

<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'secure_login');
define('DB_USER', 'blahblah');
define('DB_PASSWORD', 'blah');

$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) 
  or die("Failed to connect to MySQL: " . mysql_error()); 

$db=mysql_select_db(DB_NAME,$con) or die("Failed 
to connect to MySQL: " . mysql_error());

/* $ID = $_POST['user']; 
   $Password = $_POST['pass']; 
*/

    function SignIn(){
        session_start();

       if(!empty($_POST['user'])){
         $query = mysql_query("SELECT * FROM UserName where = '$_POST[user]'
          AND pass =  '$_POST[pass]'") or die(mysql_error());

        $row = mysql_fetch_array($query) or die(mysql_error());
        if(!empty($row['userName']) AND !empty($row['pass'])){
            $_SESSION['userName'] = $row['pass'];
            header("Location: index.html");
            echo "Sucessfuly login";
        }
        else{
            echo "sorry failed";
        }
     }
  }

if(isset($_POST['submit'])){
  SignIn();
}

?>

2 个答案:

答案 0 :(得分:0)

你做这件事的方式存在一些基本问题。但是,正如他们所说的那样。空白页表示某些内容失败,但未输出到浏览器。

即使您有or die(mysql_error(),也可能没有看到它,因为未启用错误报告。将error_reporting(E_ALL);添加到PHP脚本的顶部,它应该显示问题所在。

答案 1 :(得分:-1)

你的问题很可能在这里:

 $query = mysql_query("SELECT * FROM UserName where = '$_POST[user]'
          AND pass =  '$_POST[pass]'") or die(mysql_error());

应该是:

$sql = "SELECT * FROM users_table WHERE UserName = \"".$_POST['user']."\" AND pass = \"".$_POST['pass']."\"";

您的密码不应存储为纯文字;你需要以某种形式散列它们。这是一个建议,但强烈而强烈的建议。在本例中你应该比我们任何一个人都更加小心,通过检查魔术引号等来确保SQL注入不是问题。