2017-08-13 65 views
-2

我有問題傳遞會話信息或設置它們。我有這個代碼。會話變量?傳遞通過PHP頁面

 // To protect MySQL injection for Security purpose 
     $UserName = stripslashes($UserName); 
     $Password = stripslashes($Password); 
     $UserName = mysqli_real_escape_string($con, $UserName); 
     $Password = mysqli_real_escape_string($con, $Password); 
     // SQL query to fetch information of registerd users and finds user match. 
     $query = mysqli_query($con, "select * from Employee where password='$Password' AND username='$UserName'"); 
     $rows = mysqli_num_rows($query); 
     if ($rows == 1) { 
      $_SESSION['User']= $rows['FName'] $rows['LName']; // Initializing Session 
      header("location: Dashboard.php"); // Redirecting To Other Page 
     } else { 
      header("location: index.php"); // Redirecting To Other Page 
      $error = "Username or Password is invalid"; 
     } 
     mysqli_close($con); // Closing Connection 
    } 
} 
?> 

一旦用戶已通過身份驗證。我希望將用戶會話設置爲他們的名字和姓氏。如果我需要設置2個不同的會話變量,我可以。

獲取信息的頁面。這裏是重溫代碼。我可以讓它迴應用戶說歡迎(姓名在這裏)。

<?php session_start(); 
$User = $_SESSION['$User']; 
echo $User; 
?> 

<table border="0" width="100%" cellspacing="0" cellpadding="0" height="45" bgcolor="#aabbcc"> 
    <tr> 
     <td> 
      <p align="Left"><font face="Monotype Corsiva" size="3">&nbsp;&nbsp;Welcome <?php echo $User; ?>&nbsp;</font> 
<?php 
//Gets the IP address 
$ip = getenv("REMOTE_ADDR") ; 
Echo "Your IP is " . $ip; 
?> 
    </tr > 
</table> 

有人可以給我帶頭。我已經檢查了一些教程等新的會議。只是沒有在教程網站上看到解決方案。


新編碼!!!這裏XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


<?php 
session_start(); // Starting Session 
$error=''; // Variable To Store Error Message 
if (isset($_POST['Submit'])) { 
if (empty($_POST['UserName']) || empty($_POST['Password'])) { 
$error = "Username or Password is invalid"; 
} 
else 
{ 
// Define $username and $password 
$UserName=$_POST['UserName']; 
$Password=$_POST['Password']; 
// Establishing Connection with Server by passing server_name, user_id and password as a parameter 
$con = mysqli_connect("localhost", "USER", "PASS", "DATABASE"); 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

// To protect MySQL injection for Security purpose 
$UserName = stripslashes($UserName); 
$Password = stripslashes($Password); 
$UserName = mysqli_real_escape_string($con, $UserName); 
$Password = mysqli_real_escape_string($con, $Password); 
// SQL query to fetch information of registerd users and finds user match. 
$query = mysqli_query($con, "select * from Employee where password='$Password' AND username='$UserName'"); 
$rows = mysqli_num_rows($query); 
if ($rows == 1) { 
$_SESSION['User']= array('FName' =>$rows['FName'], 'LName' => $rows['LName']); // Initializing Session 
header("location: Dashboard.php"); // Redirecting To Other Page 
} else { 
header("location: index.php"); // Redirecting To Other Page 
$error = "Username or Password is invalid"; 
} 
mysqli_close($con); // Closing Connection 
} 
} 
?> 

確定其傳遞到包括在我的dashboard.php是代碼

<?php session_start(); 
$User = $_SESSION['User']; 
error_reporting(E_ALL); ini_set('display_errors', 1); 
?> 

<table border="0" width="100%" cellspacing="0" cellpadding="0" height="45" bgcolor="#aabbcc"> 
<tr><td> 
<p align="Left"><font face="Monotype Corsiva" size="3">&nbsp;&nbsp;<?php echo "Welcome {$User['FName']} {$User['LName']}"?>&nbsp;</font> 
<?php 
//Gets the IP address 
$ip = getenv("REMOTE_ADDR") ; 
Echo "Your IP is " . $ip; 
?> 
</tr > 
    </table> 

並感謝大家的建議!

+0

在登錄腳本上是'session_start();'?如果不是,它需要。 – Rasclatt

+1

也不要這樣做''select * from Employee where password ='$ Password'AND username ='$ UserName'「'。你需要查找綁定參數 – Rasclatt

+0

是的,我遺漏了相關頂級代碼的頂部。是的,它是與我的數據連接信息 –

回答

0

您將會話變量的鍵設置爲'用戶',但在第二個腳本中使用'$ User'。所以這是兩個不同的關鍵。

$rowWithUserName = mysqli_fetch_row($query); // fetch first and only row from query 
$_SESSION['User'] = $rowWithUserName['FName'] . " " . $rowWithUserName['LName']; // Initializing Session to key 'User' 




<?php session_start(); 
    // $User = $_SESSION['$User']; why are you using '$User' as the key inside []. use 'User' instead. 
    $User = $_SESSION['User']; 
    echo $User; 
?> 
2

您將需要修改這條線,因爲它應該在你可以在其他的腳本會導致編譯錯誤,如

Parse error: syntax error, unexpected '$rows' (T_VARIABLE) in .....

$_SESSION['User']= $rows['FName'] $rows['LName']; 

將其更改爲

$_SESSION['User'] = array('FName' => $rows['FName'], 'LName' => $rows['LName']); 

現在做

<?php 
session_start(); 

$User = $_SESSION['User']; 

echo "Hello {$User['FName']} {$User['LName']}"; 

Add error reporting to the top of your file(s) while testing right after your opening PHP tag for example <?php error_reporting(E_ALL); ini_set('display_errors', 1); to see if it yields anything.

+0

它仍然不符合該建議。我現在得到以下內容PHP警告:session_start():無法發送會話緩存限制器 - 已發送的頭文件。這是在我的錯誤文件。不向用戶顯示名字的第一個和最後一個名字,謝謝你幫助我理解的建議。 –

+0

然後,你必須在第二個腳本中做一些事情,你沒有向我們展示發送給瀏覽器的東西 – RiggsFolly

+0

好的,我要編輯我目前所擁有的內容。我會再次評論代碼的更新時間。 –

0

找到解決方案!

// To protect MySQL injection for Security purpose 
$UserName = stripslashes($UserName); 
$Password = stripslashes($Password); 
$UserName = mysqli_real_escape_string($con, $UserName); 
$Password = mysqli_real_escape_string($con, $Password); 
// SQL query to fetch information of registerd users and finds user match. 
$sql = "SELECT * FROM Employee where Password='$Password' AND UserName='$UserName'"; 
    $result = mysqli_query($con, $sql) or die(mysqli_error($con)); 
    $User=mysqli_fetch_array($result); 
$row = mysqli_num_rows($result); 
if ($row == 1) 
{ 
$_SESSION["FName"] = $User['FName']; 
$_SESSION["LName"] = $User['LName']; 
$_SESSION["AccessLvl"] = $User['AccessLvl']; // Initializing Session header 

header("location: Dashboard.php");