2016-04-10 18 views
0

succesfulyでログインでき、ユーザを表示できます...しかし、ここで何か間違っていると、私はユーザの名前を表示できません。ここに私が試した形です:PHPエコー表示名ではないユーザ

<?php 
include("dbconfig.php"); 
session_start(); 
if($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
// username and password received from loginform 
$name=mysqli_real_escape_string($dbconfig,$_POST['name']); 
$username=mysqli_real_escape_string($dbconfig,$_POST['username']); 
$password=mysqli_real_escape_string($dbconfig,$_POST['password']); 

$sql_query="SELECT id FROM user WHERE username='$username' and password='$password'"; 
$result=mysqli_query($dbconfig,$sql_query); 
$row=mysqli_fetch_array($result,MYSQLI_ASSOC); 
$count=mysqli_num_rows($result); 


// If result matched $username and $password, table row must be 1 row 
if($count==1) 
{ 
$_SESSION['login_user']=$username; 

header("location: home.php"); 
} 
else 
{ 
$error="Useri ose passwordi gabim!"; 
} 
} 
?> 

は、ここdesplayコードです:私は誰も私を助けることができないのです何

<?php 
if(!isset($_SESSION['login_user'])) 
{ 
header("Location: login.php"); 
} 
else 
{ 
$name=$_SESSION['login_user']; 
?> 
Welcome <?php echo $name;?> 
<?php 
} 
?> 

?ありがとう!

+0

通常、ユーザーIDをセッションに保存し、各ページの読み込みに必要なものを取得します。あなたのコードでは、セッションにdisplaynameを保存するので、後でそれを取得するときに、実際の名前ではなく(実際にはセッションに格納されていない)同じものを取得します。 – JimL

+0

2番目の部分(desplay)に 'session_start();' –

+0

home.phpでserssion_start()を起動しているかどうか確認してください – PacMan

答えて

1

私が理解したところから、ウェルカムメッセージにユーザー名ではなくユーザー名を表示しようとしています。

まず、ユーザーの名前を取得していないことを確認してください。だから、IDと一緒にそれを取得する必要があります。

データベース内のフィールドが「名前」であるとします。

あなたのクエリを変更することができます。

$sql_query="SELECT id, name FROM user WHERE username='$username' and password='$password'"; // Add name along with id 
$result = mysqli_query($dbconfig,$sql_query); 
$row = mysqli_fetch_array($result,MYSQLI_ASSOC); 
$count = mysqli_num_rows($result); 

if($count==1) { 

    $_SESSION['User']['username'] = $username;  // Change this 
    $_SESSION['User']['name']  = $row['name']; // Add this 
    header("location: home.php"); 
} else { 
    /* Other code */ 
} 

、お使いのディスプレイのコード:

<?php 
    session_start(); 
    if(!isset($_SESSION['User'])) { 
     header("Location: login.php"); 
    } else { 
     $name = $_SESSION['User']['name']; 
    ?> 
    Welcome <?php echo $name;?> 
    <?php } ?> 

は、この情報がお役に立てば幸いです。

+0

ありがとうございました。 –

+0

ユーザー入力からSQLステートメントを直接作成しないでください。 [SQLインジェクション](https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet)について教えてください。 – mkluwe

関連する問題