2017-04-10 4 views
0

ログイン後、ただ1つのウェルカムエリアを備えたスタディプランナーを構築しています。現在、現在ログインしているユーザーのユーザーIDを取得しようとしています。このウェルカム領域内のSQL更新クエリと、ウェルカムメッセージで使用するユーザーのファーストネームで使用します。現在ログインしているユーザーIDとファーストネームをデータベースから取得する種類アシスタンス

私は)経由で正常に動作します($_SESSION['login_user'] = $username;$_SESSION['login_user'] = $username;$_SESSION['user_id'] = userid;$_SESSION['user_firstname'] = firstname;を入れて試してみましたが、ページにログインすると、私はこれらのエラーを取得:Notice: Use of undefined constant userid - assumed 'userid' in C:\wamp64\www\justread\session.php on line 11Notice: Use of undefined constant firstname - assumed 'firstname' in C:\wamp64\www\justread\session.php on line 12を。

ここで私は、セッション変数を設定する前に 'userid'と 'firstname'の初期設定を行う必要があることを知っていますが、どうすればよいかわかりません誰かが私を助けることができるかどうか疑問に思ってください。

ありがとうございます。

必要な場合、私はより多くのコードを投稿することができますが、私は懸念していると考えているコードは次のとおりです。

login.php:PHP、変数名で

<?php 

// Start session 
session_start(); 
// Variable to store error message 
$error =""; 
// If the login form (Note that the 'submit' refers to the 'name' attribute of the login form) has been submitted... 
if (isset($_POST['submit'])) { 
    // If username or password is not provided... 
    if (empty($_POST['username']) || empty($_POST['password'])) { 
     // ...tell user that login details are invalid. 
     $error = "Please fill in both your username and your password"; 
     // Else... 
    } else { 
     // ...put the provided username and password in variables $username and $password, respectively 
     $username = $_POST['username']; 
     $password = $_POST['password']; 
     // Establish connection to the server 
     $mysqli = mysqli_connect("localhost", "root", ""); 
     // set up measures to counter potential MySQL injections 
     $username = stripslashes($username); 
     $password = stripslashes($password); 
     $username = mysqli_real_escape_string($mysqli, $username); 
     $password = mysqli_real_escape_string($mysqli, $password); 
     // Select Database 
     $db = mysqli_select_db($mysqli, "p00702"); 
     // SQL query to fetch information of registerd users and find user match. 
     $query = mysqli_query($mysqli, "SELECT * from logins WHERE password='$password' AND username='$username'"); 
     // Return the number of rows of the query result and put it in $rows variable 
     $rows = mysqli_num_rows($query); 
     // If rows are equal to one... 
     if ($rows == 1) { 
      unset($_SESSION['error']); 
      // Initialize session with the username of the user... 
      $_SESSION['login_user'] = $username; 
      // Set the user ID of the user 
      $_SESSION['user_id'] = userid; 
      // Set the user first name of the user 
      $_SESSION['user_firstname'] = firstname; 
      // ...and redirect to the homepage. 
      header("Location: welcome.php"); 
      // Make sure that codes below do not execut upon redirection. 
      exit; 
     // Else, 
     } else { 
      // and tell user that the login credentials are invalid. 
      $error = "Your username or password is invalid"; 
      $_SESSION['error'] = $error; 
      // redirect user to the home page (index.php) 
      header("Location: index.php"); 
     } 
     // ...and close connection 
     mysqli_close($mysqli); 
    } 
} 

session.php

<?php 

// Establish connection to the server 
$mysqli = mysqli_connect("localhost", "root", ""); 
// Selecting Database 
$db = mysqli_select_db($mysqli, "p00702"); 
// Starting session 
session_start(); 
// Storing Session 
$user_check = $_SESSION['login_user']; 
$_SESSION['user_id'] = userid; 
$_SESSION['user_firstname'] = firstname; 
// Test to see the content of the global session variable 
print_r($_SESSION); 
// SQL Query To Fetch Complete Information Of User 
$ses_sql = mysqli_query($mysqli, "SELECT username FROM logins WHERE username='$user_check'"); 
$row = mysqli_fetch_assoc($ses_sql); 
$login_session = $row['username']; 
if (!isset($login_session)) { 
    // Closing Connection 
    mysqli_close($mysqli); 
    // Redirecting To Home Page 
    header('Location: index.php'); 
    // Make sure that codes below do not execut upon redirection. 
    exit; 
} 

答えて

0

'$'記号で始まります。また、login.phpでは、mysqli_fetch_rowまたはそれに類する関数を使用してデータを取得する必要があります。ログイン後にsession.phpにリダイレクトすると仮定しています。その場合、セッション変数に何も割り当てる必要はありません。それはすでにあるだろう。あなたがしなければならないことは、それにアクセスすることだけです。

login.php

<?php 

// Start session 
session_start(); 
// Variable to store error message 
$error =""; 
// If the login form (Note that the 'submit' refers to the 'name' attribute of the login form) has been submitted... 
if (isset($_POST['submit'])) { 
    // If username or password is not provided... 
    if (empty($_POST['username']) || empty($_POST['password'])) { 
     // ...tell user that login details are invalid. 
     $error = "Please fill in both your username and your password"; 
     // Else... 
    } else { 
     // ...put the provided username and password in variables $username and $password, respectively 
     $username = $_POST['username']; 
     $password = $_POST['password']; 
     // Establish connection to the server 
     $mysqli = mysqli_connect("localhost", "root", ""); 
     // set up measures to counter potential MySQL injections 
     $username = stripslashes($username); 
     $password = stripslashes($password); 
     $username = mysqli_real_escape_string($mysqli, $username); 
     $password = mysqli_real_escape_string($mysqli, $password); 
     // Select Database 
     $db = mysqli_select_db($mysqli, "p00702"); 
     // SQL query to fetch information of registerd users and find user match. 
     $query = mysqli_query($mysqli, "SELECT * from logins WHERE password='$password' AND username='$username'"); 
     // Return the number of rows of the query result and put it in $rows variable 
     $rows = mysqli_num_rows($query); 
     // If rows are equal to one... 
     if ($rows == 1) { 
      $row = mysql_fetch_object($query); 
      unset($_SESSION['error']); 
      // Initialize session with the username of the user... 
      $_SESSION['login_user'] = $username; 
      // Set the user ID of the user 
      $_SESSION['user_id'] = $row->userid; 
      // Set the user first name of the user 
      $_SESSION['user_firstname'] = $row->firstname; 
      // ...and redirect to the homepage. 
      header("Location: welcome.php"); 
      // Make sure that codes below do not execut upon redirection. 
      exit; 
     // Else, 
     } else { 
      // and tell user that the login credentials are invalid. 
      $error = "Your username or password is invalid"; 
      $_SESSION['error'] = $error; 
      // redirect user to the home page (index.php) 
      header("Location: index.php"); 
     } 
     // ...and close connection 
     mysqli_close($mysqli); 
    } 
} 

session.phpまた

<?php 

// Establish connection to the server 
$mysqli = mysqli_connect("localhost", "root", ""); 
// Selecting Database 
$db = mysqli_select_db($mysqli, "p00702"); 
// Starting session 
session_start(); 

if (!isset($_SESSION['user_id'])) { 
    // Closing Connection 
    // Redirecting To Home Page 
    header('Location: index.php'); 
    // Make sure that codes below do not execut upon redirection. 
    exit; 
} 
print_r($_SESSION); 

、ユーザーの資格情報が変更されたときになるように、別々のファイルに接続部を移動し、すべてのスクリプトに含め、あなたドンすべてのファイルでそれを変更する必要があります。

+0

ご連絡ありがとうございました。私は以下の行を入れました:$ row = mysql_fetch_object($ query); $ _SESSION ['user_id'] = $ row-> userid; $ _SESSION ['user_firstname'] = $ row-> firstname;それでも同じエラーが発生します。私は行方不明の他に何かありますか? –

+0

session.phpファイルを確認してください。最初に割り当て操作を行うべきではありません。 –

+0

ねえ、私はどこかに行っています。ユーザーIDが表示されています。名前のアスペクトをソートするだけです。お知らせいたします。ありがとうございました。 –

関連する問題