我的php post 2 id代替了一个



wen我注册了一个帐户EX:my,game在我的sql EX中:id name密码1我的游戏2我的游戏但我只按了一次submit,它两次广告我的php它在下面,我的html它是一个表单lablel imput submit

<?php
define('DB_NAME', 'abcd');
define('DB_USER', 'abcd');
define('DB_PASSWORD', '******');
define('DB_HOST', 'localhost');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$link)
{
die('Could NOT Connect: rong pass ' . mysql_error(rong_pass));
}
$db_selected = mysql_select_db(DB_NAME, $link);
if (!$db_selected) 
{
die ('Cant't use' . DB_NAME. 'abcd' . mysql_error());
}
echo 'log in succes';
$id = $_POST["id"];
$com_name = $_POST["com_name"]; // Since method=”post” in the form
$log_in = $_POST["log_in"];
$password = $_POST["password"];

$sql = "INSERT INTO members (com_name, log_in, password) VALUES                   
('$_POST[com_name]','$_POST[log_in]','$_POST[password]')";
$result = mysql_query($sql);
$result = mysql_query($sql) or die (" could not save record sorry ");
mysql_close();
?>
</ p><a href="demo.html">inapoi</a>
//tot odata ai fost adaugat in baza noastra de date

原因是,您正在调用mysql_query()两次

$result = mysql_query($sql);
$result = mysql_query($sql) or die (" could not save record sorry ");
  • 移除一个

重要旁注:

您当前的代码对SQL注入是开放的。使用准备好的语句,或将PDO与准备好的声明一起使用它们更安全


另外,这个or die (" could not save record sorry ")对你没有帮助。

一旦触发,使用or die(mysql_error())来获得真正的错误。


错误报告添加到文件顶部,这将有助于查找错误(如果有错误)。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code

旁注:错误报告只能在临时阶段进行,而不能在生产阶段进行。


关于密码存储:

我注意到你可能在以纯文本存储密码。如果是这样的话,我们强烈反对。

我建议您使用CRYPT_BLOWFISH或PHP 5.5的password_hash()函数。对于PHP<5.5使用CCD_ 5。


编辑:似乎Q&A已被删除,不知道为什么

-点击此处查看ircmaxell的答案https://stackoverflow.com/a/29778421/其中他利用具有准备好的语句和CCD_ 6的PDO

从他的回答中抽出:

只要使用图书馆。认真地它们的存在是有原因的。

  • PHP 5.5+:使用password_hash()
  • PHP 5.3.7+:使用password-compat(上面的兼容包
  • 所有其他:使用phpass

不要自己做。如果你在创造自己的盐,你做得不对。您应该使用一个为您处理该问题的库。

$dbh = new PDO(...);
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$hash = password_hash($password, PASSWORD_DEFAULT);
$stmt = $dbh->prepare("insert into users set username=?, email=?, password=?");
$stmt->execute([$username, $email, $hash]);

登录时:

$sql = "SELECT * FROM users WHERE username = ?";
$stmt = $dbh->prepare($sql);
$result = $stmt->execute([$_POST['username']]);
$users = $result->fetchAll();
if (isset($users[0]) {
if (password_verify($_POST['password'], $users[0]->password) {
// valid login
} else {
// invalid password
}
} else {
// invalid username
}
$sql = "INSERT INTO members (com_name, log_in, password) VALUES                   
('$_POST[com_name]','$_POST[log_in]','$_POST[password]')";
$result = mysql_query($sql);
$result = mysql_query($sql) or die (" could not save record sorry ");

您正在运行SQL Insert两次。删除其中一个,一切都会好起来!:)

看起来您正在运行查询两次。。。。

$result = mysql_query($sql);
$result = mysql_query($sql) or die (" could not save record sorry ");

最新更新