Php没有从html表单接收值

时间:2014-09-07 13:21:37

标签: php html

在以下代码中,php变量不接收来自html表单的数据。代码直接执行if-else语句而不等待输入。

<?php
if(mysql_connect("localhost","root","")==false)
{
  die ("Connection Failed");
}
mysql_select_db("fb");
$id=$_POST["email"];
$pwd=$_POST["password"];
$sql=mysql_query("SELECT* FROM admin WHERE id='$id' AND pass='$pwd'");
if($sql)
{
 die ("Login");
}
else
{
  die ("Failed");
}
?>
<!DOCTYPE html>
<html lang='en'>
<head>
  <meta charset="UTF-8" /> 
  <title>
    HTML Document Structure
  </title>
  <!--<link rel="stylesheet" type="text/css" href="style.css" />!-->
</head>
<body>

  <form method="POST">
    <h1>Welcome</h1>
    <div class="inset">
      <p>
        <label for="email">Login</label>
        <input type="text" name="email" id="email">
      </p>
      <p>
        <label for="password">PASSWORD</label>
        <input type="password" name="password" id="password">
      </p>
    </div>
    <p class="p-container">
      <span>Forgot password ?</span>
      <input type="submit" name="Login" id="Login" value="Log in">
    </p>
  </form>

</body>
</html>

我知道这段代码很容易受到SQL注入攻击,但谁知道它是否是一个归属分配。 :)

2 个答案:

答案 0 :(得分:4)

  

代码直接执行if-else语句而不等待输入。

原因是您将整个代码(HTML / PHP / SQL)放在一个文件中,没有条件语句来控制它。

使用提交按钮的名称元素if(isset($_POST['Login']))将解决此问题。

另一种选择是使用两个单独的文件。一个使用您的表单,另一个使用PHP / SQL并为表单的操作设置action="handler.php"

<form method="POST">相当于<form method="POST" action="">(自我)。

<?php
if(mysql_connect("localhost","root","")==false)
{
  die ("Connection Failed");
}
mysql_select_db("fb");
$id=$_POST["email"];
$pwd=$_POST["password"];

if(isset($_POST['Login'])){

$sql=mysql_query("SELECT * FROM admin WHERE id='$id' AND pass='$pwd'");
if($sql)
{
 die ("Login");
}
else
{
  die ("Failed");
}

} // brace for if(isset($_POST['submit']))
?>

以下链接将在稍后帮助您。

对于密码,CRYPT_BLOWFISH或PHP 5.5的password_hash()功能。对于PHP&lt; 5.5使用password_hash() compatibility pack

另外,mysqli with prepared statementsPDO with prepared statements


另外,使用or die(mysql_error())mysql_query()而不是现在的方式。它会发出实际错误信号,如果有的话。

答案 1 :(得分:0)

  

代码直接执行if-else语句而不等待输入。

然后告诉它在输入后执行这些操作。

if($_POST) {
    $id=$_POST["email"];
    $pwd=$_POST["password"];
    $sql=mysql_query("SELECT* FROM admin WHERE id='$id' AND pass='$pwd'");
    if($sql)
    {
     die ("Login");
    }
    else
    {
      die ("Failed");
    }
}
  

我知道这段代码很容易受到SQL注入攻击,但是谁关心它是否是一个归属分配。

由于项目的性质,永远不要放弃安全。你会落入一个陷阱,然后它会在以后的生活中咬你。无论项目如何,请确保您的应用程序安全。