我的注册表单和PHP脚本:两者都位于一个页面中:index.php
。我有4个问题:
$new_user_id =
$db->insert_id();
但它无法正常工作。也
“最后一次自动增量+ 1”配方
不可靠的。因为在比赛中
条件没有保证
其他用户不会插入新的
在你的功能完成时记录
这是工作。有什么想法吗?最后我添加了
foreach ($_POST as $key => $value) {
$_POST[$key] = mysqli_real_escape_string($value);
}
在页面顶部,但它清空了 一些价值观。我必须具备哪些价值观 消毒
我的代码
if($submit) {
$sql = "INSERT INTO usr_table (fullname, dob, school, add_date, phone, adress, info) VALUES ('$fullname', '$dob', '$school', CURDATE(), '$phone', '$adress', '$info')";
$result = $db->query($sql) or die(mysqli_errno());
$new_user_id = $db->insert_id();
$friend_arr = explode(',', $friends);
foreach($friend_arr as $friend_name) {
$friend_name = trim($friend_name);
if (empty($friend_name)) {
continue;
}
$sql = "SELECT id FROM usr_table WHERE `fullname` = '$friend_name' LIMIT 1";
$result = $db->query($sql);
if (!$result) {
echo "$sql failed " . mysqli_errno();
exit;
}
if (mysqli_num_rows($result) == 0) {
echo "Bazada ".$friend_name ." adlı adam yoxdur ";
}
$data = $db->fetch_array($result);
$friend_id = $data['id'];
$sql = "INSERT INTO usrfrnd_table (`user_id`, `friend_id`) VALUES ('$new_user_id', '$friend_id')";
$success=$db->query($sql) or die(mysqli_errno());
if($success) {header('Location: index.php');}
else {die(mysqli_errno());}
}
}
答案 0 :(得分:3)
您应发布此网站用于在帖子中显示的PHP / HTML / Whatever代码。如果您使用的是PHP并且该站点为空,则可能存在错误,但您已停用错误报告。您应该activate it来调试提案。
在Query中,只需将用户值放在SQL-String中并在数据库上执行即可。这使您的代码成为SQL注入的可能目标。你应该做的是:
您可以使用JavaScript来执行此操作。如果您刚刚使用Google搜索,则可能找到this。
如果您使用PreapredStatement(就像我在问题2中提到的那样),您可以完全放弃。
答案 1 :(得分:0)
您需要提供mysqli链接作为mysqli_real_escape_string
的第一个参数:
foreach($_POST as $key => $value){
$_POST[$key] = mysqli_real_escape_string($db, $value);
}
此外,用户输入的所有必须使用正确的函数进行清理:输出到页面时htmlspecialchars
,将用户数据发送到数据库时mysqli_real_escape_string
。
广告@米