2017-02-21 3 views
-1

Я установил систему регистрации/регистрации из учебника. Теперь я пытаюсь использовать сеансы для отображения информации о профиле. Я просмотрел довольно много форумов и руководств, и я считаю, что у меня есть фактический код, необходимый для отображения фактической информации из базы данных. Но я не могу ее показать. Я, вероятно, что-то не так ... Я пытаюсь получить часть «Электронная почта» из базы данных и отобразить ее для профиля.

<?php 
require('db.php'); 

// Create connection 
$conn = new mysqli("XXXXXX"); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT id, username, email FROM users"; 
$result = $conn->query($sql); 

$_SESSION['email'] = $_POST['email']; 


?> 
<?php 
session_start(); 
?> 
<p><strong>Email:</strong>&nbsp;<?php echo $_SESSION['email']; ?></p> 
+4

вам нужно поставить session_start() на самом top вашего php-файла – Dimi

+1

Почему session_start наконец? Он должен быть до $ _SESSION – C2486

+1

просто: сначала запустите сеанс FIRST и убедитесь, что у POST-массива значение; не знаю, откуда и как это происходит. –

ответ

2

Из ограниченной информации я могу думать об этом:

  • Вы уже завершенного модуль
  • Войти/регистрация только пользователь успешно вошли в систему, вы хотите, чтобы отобразить данные профиля, для этого пользователя , Правильно?

В этом случае здесь есть основное предположение о вашей ситуации:

  1. Прежде всего, если вы переводите своего пользователя на эту страницу после входа в систему, это означает, что не будет $ _POST данных нет (вообще). вы можете подтвердить это с помощью var_dump ($ _ POST).

  2. У вас уже есть переменная $ _SESSION, устанавливающая некоторые предметы во время входа в систему. предположим, что это $ _SESSION ['email'], вы можете подтвердить это с помощью var_dump ($ _ SESSION).

Исходя из этого предположения, это то, как ваш измененный код будет выглядеть следующим образом:

<?php 
require('db.php'); 

//This should come first before accessing $_SESSION 
session_start(); 

// Create connection 
$conn = new mysqli("XXXXXX"); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

//This query should be used with WHERE as you only want to get data of one particular user. 
//This is just for an example purpose, in practice you should always use parameterized query Or at least escape data before using it. 
$sql = "SELECT id, username, email FROM users WHERE email = " . $_SESSION['email'] . ";"; 

$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     //Assuming only one record will be returned because username/email should be unique 
     $result = $row; 
    } 
} else { 
    //Handle if you don't get any data 
} 

$email = $result['email']; 

?> 

<p><strong>Email:</strong>&nbsp;<?php echo $email; ?></p> 

Я надеюсь, что это может иметь некоторую помощь

Смежные вопросы