2017-08-13 13 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つの異なるセッションvarに設定する必要がある場合はできます。

情報を取得するページ。ここには棄権コードがあります。私はそれが歓迎(ここに名前)と言うユーザーをエコーするようにそれを得ることができます。

<?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> 

誰かが私にリードを与えることはできますか?私はいくつかのチュートリアルなどを確認しました。チュートリアルサイトで解決策を見ていないだけです。


新しいコーディング!ここに私のdashboard.phpに含める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 
} 
} 
?> 

OKの通過は、そのコード

<?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

また、パスワードを「$ Password」AND username = '$ UserName' "'のEmployeeから選択しないでください。あなたはバインドパラメータを調べる必要があります – Rasclatt

+0

はい問題のトップコードの上部を省略しました。はい、そこに私のデータ接続情報があります –

答えて

0

セッション変数のキーを「ユーザー」に設定しますが、2番目のスクリプトでは「$ユーザー」を使用します。これは2つの異なるキーです。

$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

それはあなたができる他のスクリプトで今

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

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

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

変更それのようにコンパイルエラーを引き起こしている必要があるとしてあなたは、この行を修正する必要があります。 do

<?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():セッションキャッシュリミッタを送信できません - すでに送信されたヘッダです。それは私のエラーファイルにあります。ユーザーのためにvarを表示していないと私の理解を助ける提案に感謝します。 –

+0

あなたは、ブラウザに何かを送信していることを私たちに示していない、その2番目のスクリプトで何かをしているに違いない。 – RiggsFolly

+0

OK今現在私が現在行っているもので編集するつもりです。コードが更新されたら、もう一度コメントします。 –

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"); 
関連する問題