注册页面问题

时间:2011-06-17 22:23:58

标签: php jquery mysqli

我的注册表单和PHP脚本:两者都位于一个页面中:index.php。我有4个问题:

  1. php代码成功添加了所有内容 信息到数据库但是在提交之后 按钮,新打开的页面出现 空白。功能不返回 提交表格后的上一页
  2. 在注册过程中如何知道什么 将是注册用户的ID?一世 为此目的使用了$new_user_id = $db->insert_id(); 但它无法正常工作。也 “最后一次自动增量+ 1”配方 不可靠的。因为在比赛中 条件没有保证 其他用户不会插入新的 在你的功能完成时记录 这是工作。有什么想法吗?
  3. 如何在飞行中添加新字段 并将它们的值存储在db中 那? http://prntscr.com/2303n (contacts.google.com)
  4. 最后我添加了

    foreach ($_POST as $key => $value) { 
      $_POST[$key] = mysqli_real_escape_string($value);
    }
    

    在页面顶部,但它清空了 一些价值观。我必须具备哪些价值观 消毒

  5. 我的代码

     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());}
    }
    }
    

2 个答案:

答案 0 :(得分:3)

问题1

您应发布此网站用于在帖子中显示的PHP / HTML / Whatever代码。如果您使用的是PHP并且该站点为空,则可能存在错误,但您已停用错误报告。您应该activate it来调试提案。

问题2

在Query中,只需将用户值放在SQL-String中并在数据库上执行即可。这使您的代码成为SQL注入的可能目标。你应该做的是:

  1. 为其创建PreparedStatement 你的插入。
  2. Bind the parameters(= 用户输入)。
  3. 数据库上的
  4. Execute it
  5. Get the generated ID来自 最后一次插入操作。
  6. 问题3

    您可以使用JavaScript来执行此操作。如果您刚刚使用Google搜索,则可能找到this

    问题4

    如果您使用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

广告@米

相关问题