我的PHP出错了

时间:2013-12-13 21:12:26

标签: php html sql database forms

当我在我的表单上注册时,我收到此错误。任何帮助都会很棒。

错误:

Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or 
T_NUM_STRING in /home/u378761662/public_html/action.php on line 3

我的PHP:

<?php
$con=mysqli_connect("myhost.com","user","password","db");
$sql="INSERT INTO users values ($_POST["username"], $_POST["pwd"], $_POST["email"])";
if (mysqli_query($con,$sql)) {
echo "User added!";
}

我的HTML:

<form action="action.php" method="post">
  Username<input type="text" name="username">
  <p>
    Password<input type="password" name="pwd">
    <p>
      Email<input type="text" name="Email">
<p>
    <input type="submit" name="Sign Up" value="Sign Up">
</form>

3 个答案:

答案 0 :(得分:3)

您应养成将查询参数用于要包含在SQL查询中的动态值的习惯。这有助于避免引用混淆,并有助于避免安全漏洞。

这也很容易!

$sql="INSERT INTO users values (?, ?, ?)";
if ($stmt = mysqli_prepare($con,$sql)) {
  mysqli_stmt_bind_param($stmt, "sss", 
    $_POST["username"], $_POST["pwd"], $_POST["Email"]);
  if (mysqli_stmt_execute($stmt)) {
    echo "User added!";
  }
}

PS:You're Probably Storing Passwords Incorrectly

答案 1 :(得分:0)

这是一个引用问题:

$sql="INSERT INTO users values ($_POST['username'], $_POST['pwd'], $_POST['email'])";

原始"导致解析器错误。此外,正如@JohnConde所指出的那样,这是“对SQL injections开放的。”

答案 2 :(得分:0)

警告:您仍然容易受SQL Injection攻击。查看Bill Karwin对您的问题的解决方案的答案,以及防止您受到这些类型攻击的影响。

如错误所示,请查看第3行,引号错误:

$sql="INSERT INTO users values (" . $_POST["username"] . ", " . $_POST["pwd"] . ", " . $_POST["email"] . ")";