【问题标题】:I get an error with my PHP [closed]我的 PHP 出现错误 [关闭]
【发布时间】:2013-12-13 21:12:25
【问题描述】:

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

错误:

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>

【问题讨论】:

  • 仅供参考,您也对SQL injections保持开放态度
  • 您需要过滤输入。您存储它们的值的方式不安全。看看您输入的电子邮件字段名称是“电子邮件”,而您正试图获取“电子邮件”跨度>

标签: php html sql database forms


【解决方案1】:

您应该养成对要包含在 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

【讨论】:

  • 感谢您的帮助!现在我注册时没有收到错误消息,但插入表单的内容不会显示在数据库中。有什么建议吗?
  • 没关系,我想通了
  • 比尔你看到输入字段名称是“电子邮件”并且你得到的是“电子邮件”
  • @amarjitsngh 我刚刚注意到了。谢谢!
  • @amarjitsngh,谢谢,我已经编辑了上面的内容。
【解决方案2】:

这是一个引用问题:

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

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

【讨论】:

    【解决方案3】:

    警告:您仍然容易受到SQL Injection 的攻击。查看 Bill Karwin 的回答,了解您的问题的解决方案以及防止自己容易受到此类攻击的方法。

    正如错误所说,请查看第 3 行,您的报价有误:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      • 2018-07-15
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      相关资源
      最近更新 更多