2017-03-27 119 views
0

我對PHP很新,所以我在這裏遇到了一些挑戰。 眼下,即時通訊試圖讓特定的用戶ID的URL,因此它可能對我來說,根據已登錄哪些用戶更改內容。 (顯示不同的配置文件的文本,姓名,年齡和等)PHP在url中獲取用戶標識

我試過這個:header(「Location:profile.php?id = $ id」);但它似乎工作。

<?php 
session_start(); 

if(isset($_SESSION['usr_id'])!="") { 
    header("Location: index.php"); 
} 

include_once 'dbconnect.php'; 

//check if form is submitted 
if (isset($_POST['login'])) { 

    $email = mysqli_real_escape_string($con, $_POST['email']); 
    $password = mysqli_real_escape_string($con, $_POST['password']); 
    $result = mysqli_query($con, "SELECT * FROM users WHERE email = '" .  $email. "' and password = '" . md5($password) . "'"); 

    if ($row = mysqli_fetch_array($result)) { 
     $_SESSION['usr_id'] = $row['id']; 
     $_SESSION['usr_name'] = $row['name']; 
     header("Location: profile.php?id=$id"); 
    } else { 
     $errormsg = "Incorrect Email or Password!!!"; 
    } 
} 
?> 
+1

不要逃避密碼。諸如'123'\ abc'等非常有效,你可能會限制密碼。您應該使用'password_hash()'和'password_verify()'來代替。 –

+0

'if(isset($ _ SESSION ['usr_id'])!=「」)'這是一個假陽性btw;你需要把它分成兩個單獨的條件。 –

回答

0

header("Location: profile.php?id=$id");

改變你的代碼,以

header("Location: profile.php?id=" . $row['id']);

0

你不必$id任何地方所定義。使用 header("Location: profile.php?id={$row['id']}");

另外還要注意,你應該檢查profile.php,如果它是登錄用戶 - 除非你想通過交換id來查找不同的用戶數據。最好,如果你在profile.php上使用你的$_SESSION變量 - 只需訪問它,它是全球性的。

此外,不要使用md5進行密碼散列 - 現在它不是非常安全(使用password_hash),與連接sql查詢相同。使用binding params

0

您已有session中的ID。使用$_SESSION['usr_id']profile.php訪問它。

不要在URL中傳遞用戶標識,因爲這可能很容易被僞造。永遠不要相信用戶輸入

0

$ id = $ row ['id'];

header(「Location:profile.php?id = $ id」);

相關問題