2013-11-23 5 views
1

Я хочу получить данные из базы данных, используя сеанс пользователя loggedin на моем сайте, чтобы он мог видеть свой профиль со всеми своими данными, такими как имя, страна, город и адрес. Но код, который я использую, не работает "SELECT * FROM login WHERE username = $_SESSION[user]", он не дает мне никаких данных, но когда я его заменяю "SELECT * FROM login WHERE passowrd = $_SESSION[pass]", он отлично работает, но он дает все данные из базы данных, а не только для сеанса или пользователя, который зарегистрирован, пожалуйста, скажите мне решениеНе получать данные из базы данных для пользователя в PHP

вот полный код:

<?php 
    if(!isset($_COOKIE['loggedin'])){ 
     header("location:index.php"); 
    } 

session_start(); 

if(!isset($_SESSION['user'])){ 

header("location: index.php"); 
} 
else { 

?> 


<?php 
$con=mysqli_connect("localhost","root","123","user"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$result = mysqli_query($con,"SELECT * FROM login WHERE username = $_SESSION[user]") 
    or die(mysql_error()); 

echo "<table border='1'> 
<tr> 
<th>Name</th> 
<th>Country</th> 
<th>City</th> 
<th>Address</th> 

</tr>"; 

while($row = mysqli_fetch_array($result, MYSQL_ASSOC)) 
    { 
    echo "<tr>"; 
     echo "<td>" . $row['name'] . "</td>"; 
      echo "<td>" . $row['country'] . "</td>"; 
       echo "<td>" . $row['city'] . "</td>"; 
    echo "<td>" . $row['address'] . "</td>"; 

    echo "</tr>"; 
    } 
echo "</table>"; 

mysqli_close($con);} 
?> 

ответ

4

у вас есть много ошибок, приятель. Позвольте мне дать вам несколько советов:

  1. Вместо:

    "SELECT * FROM логин WHERE имя пользователя = $ _SESSION [пользователь]"

вам нужно что-то вроде:

"SELECT * FROM login WHERE username = '".$_SESSION[user]."'" 

Вам нужны апострофы вокруг имени пользователя.

  1. Убедитесь, что $_SESSION[user] существует и содержит имя пользователя.

  2. Никогда не пишите такие вопросы, как SELECT *, потому что это не очень хорошая практика. Лучшей практикой является выбор только тех столбцов, которые вам действительно нужны. Это безопаснее и экономичнее, если говорить об использовании памяти. Поэтому вместо SELECT * use SELECT col1, col2, col3.

  3. Постарайтесь запутать свой пароль. Если кто-то прорвется через вашу базу данных, он сможет украсть личность всех пользователей. Подробнее here и here. Не забывайте о таблицах радуги, если вы думаете об использовании чего-то столь же простого, как MD5.

  4. Побег ваших запросов, чтобы предотвратить SQL injections.

+0

Спасибо :) @ Lajos Arpad – Wajahat