1

登録後にユーザーIDがセッション変数として保存され、ユーザーがホームページにリダイレクトされる登録スクリプトがあります。何らかの理由で、ユーザーIDがセッション変数に保存されていません。これとまったく同じスクリプトが別のプロジェクトで機能しました。プロジェクトを取得してデータベース接続設定を変更しただけで、機能しなくなりました。

登録スクリプトは次のとおりです。

    mysqli_connect($db_host, $db_user, $db_pass) OR DIE (mysqli_error());
    // select the db
    mysqli_select_db ($link, $db_name) OR DIE ("Unable to select db".mysqli_error($db_name));

     // our sql query
    $sql = "INSERT INTO seekers (first_name, last_name, username, email, password, salt) VALUES ('$firstName', '$lastName', '$username', '$email', '$hashedPW', '$salt');";

    //save the updated information to the database          
    $result = mysqli_query($link, $sql) or die("Error in Query: " . mysqli_error($link));
    if (!mysqli_error($link)) {

        $row = mysqli_fetch_assoc($result);
        $_SESSION['user_id'] = mysqli_insert_id($link);
        $_SESSION['loggedin'] = TRUE;
        header("Location: ../index.php");
    }

そして、保護されたページでのセッションチェックとdbクエリは次のとおりです。

session_start();

if(isset($_SESSION['loggedin']) && $_SESSION['user_id'] != 'user_id') {

    include_once('includes/user.header.php');

    //set user_id
    $user_id = $_SESSION['user_id'];

    //include the logged in user header
    include_once('includes/user.header.php');

    //select user information according to their logged in user_id
    $sql = $link->query('SELECT * FROM seekers WHERE id = "'.$user_id.'"');
    $row = mysqli_fetch_assoc($sql);

   //create piece name together
   $firstName = $link->real_escape_string($row['first_name']);
   $lastName = $link->real_escape_string($row['last_name']);
   $fullName = $firstName. " " .$lastName;

  //get username
  $username = $link->real_escape_string($row['username']);

index.phpページにリダイレクトされると、DBからユーザー情報が照会されていないことを除いて、すべてが正常に表示されます。

誰かがここで何が悪いのかわかりますか?私はそれが何か小さなものでなければならないことを知っています、そして私はそれを見過ぎています。

どんな助けでも大歓迎です。

編集:すべての情報もデータベースに正常に保存されています。

4

1 に答える 1

0

選択クエリなしでuser_idを使用しようとしています...実際、最後の挿入IDを取得する必要があります

行を変更しました;

$_SESSION["user_id"]=mysql_insert_id();

if (!mysqli_error($link)) 

する必要があります

 if (!mysqli_error($result))

 $sql = $link->query('SELECT * FROM seekers WHERE id = "'.$user_id.'"');

 $sql = $link->query('SELECT * FROM seekers WHERE user_id = "'.$user_id.'"');
于 2012-11-29T03:07:19.690 に答える