我的php post 2 id insted one

时间:2015-04-24 16:38:22

标签: php sql

我注册了一个帐户EX:我的游戏 在我的SQL EX中: id name password 1我的游戏2我的游戏 但我只按提交一次,然后将它广告两次我的PHP下面和我的html它的形式lablel imput提交

<?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

3 个答案:

答案 0 :(得分:3)

原因是,您要拨打mysql_query() 两次

$result = mysql_query($sql);

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

重要旁注:

您目前的代码向SQL injection开放。使用prepared statementsPDO with prepared statements它们更安全

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

启动后,使用or die(mysql_error())获取真正的错误。

error reporting添加到文件的顶部,这有助于查找错误,如果有任何错误的话。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。

关于密码存储:

我注意到您可能以纯文本格式存储密码。如果是这种情况,则非常气馁。

我建议您使用CRYPT_BLOWFISH或PHP 5.5的password_hash()功能。对于PHP&lt; 5.5使用password_hash() compatibility pack

编辑:似乎Q&amp; A已被删除,不明白为什么

<击>   - 在https://stackoverflow.com/a/29778421/咨询ircmaxell的答案,他将PDO与预备语句和password_hash()一起使用。

从他的回答中拉出来:

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

不要自己动手。如果你正在创造自己的盐,你做错了。你应该使用一个为你处理这个问题的库。

$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
}

答案 1 :(得分:0)

$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插件。删除其中一个,一切都会好! :)

答案 2 :(得分:0)

看起来你正在运行查询两次....

$result = mysql_query($sql);

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