2015-07-28 2 views
-1

У меня есть база данных mySQL, которая содержит информацию о пользователе. Информация добавляется в БД с использованием системы регистрации пользователей, которая работает правильно. Вот пример пользователя (PHPmyadmin): enter image description herePHP не «синхронизация» с MySQL DB?

Проблема заключается в том, что у меня есть страница на основе «моей учетной записи» на PHP, которая извлекает информацию об учетной записи пользователя. Этот informaiton, похоже, не синхронизируется с MySQL, когда я обновляю информацию пользователя из PHPMyAdmin или даже когда добавляю новые данные о пользователе (например, мой PHP не обнаружит добавленное поле RealName, хотя оно признает поле «EMAILADDRESS», который был там на некоторое время

PHP/HTML:.

<div class="modal-body"> 
     <img src="assets/user.jpg" style="border-radius:150px;height:150px;width:150px;float:left;"><br> 
     <h2 class="desc" style="font-style: normal;padding:0px;margin:0px;float:left;">&nbsp <?=$_SESSION['RealName']?></h2><br><br> 
     <h4 class="desc" style="font-style: normal;padding:0px;margin:0px;float:left;"><i>&nbsp &nbsp @<?=$_SESSION['Username']?></i></h4><br><br> 
     <hr> 
     <a href=""><p class="desc" style="font-style: normal;float:left;">&nbsp &nbsp Change Profile Image...</h2></a> <a href=""><p class="desc" style="font-style: normal;float:left;">&nbsp &nbsp Change Your Name...</h2></a> 
     </div> 
     <div class="modal-footer-alt"><br><br> 
     <h4>Account Info &nbsp</h4> 
     <p class="desc" style="font-style: normal;float:left;"><b>E-Mail Address: </b><?=$_SESSION['EmailAddress']?> &nbsp</p> <code style="float:left;">Private</code><br><br> 
     <p class="desc" style="font-style: normal;float:left;"><b>Password: </b> ●●●●●●●●●● &nbsp</p> <code style="float:left;">Private</code><br> 
     <h4>Bio &nbsp</h4> 
     <textarea rows="4" cols="40"><?=$_SESSION['Bio']?></textarea> 
     <h4>More &nbsp</h4> 
     <a href="../account/die.php"><button class="btn btn-default">Log Out</button></a><a href="../account/die.php"><button class="btn btn-default">Sign Up for Contributor Rewards</button></a> 
</div> 

Как он появляется на веб-странице: enter image description here Обратите внимание, что некоторые из информации появляется и другая информация Безразлично Это не проблема с моим HTML, как если бы я заменил PHP статическим значением, он отображает штраф.

Это код, который я использую для запуска сеанса:

<?php 
session_start(); 

$dbhost = "PRIVATE"; // this will ususally be 'localhost', but can sometimes differ 
$dbname = "PRIVATE"; // the name of the database that you are going to use for this project 
$dbuser = "PRIVATE"; // the username that you created, or were given, to access your database 
$dbpass = "PRIVATE"; // the password that you created, or were given, to access your database 

mysql_connect($dbhost, $dbuser, $dbpass) or die("MySQL Error: " . mysql_error()); 
mysql_select_db($dbname) or die("MySQL Error: " . mysql_error()); 
?> 

Выйдите код:

<?php include "base.php"; $_SESSION = array(); session_destroy(); ?> 
+4

Вы извлекаете данные из сеанса. Изменяет ли ваш код значения сеанса на каждом просмотре страницы? – ceejayoz

+0

Похоже, что страница отображает информацию из сеанса, а не непосредственно из базы данных. Не могли бы вы отправить код, который получает его из базы данных на сеанс? – Mike

+0

Нет, это не так. Тем не менее, я попытался выйти из системы и войти в систему - не должен ли это убить сеанс? – Kevin

ответ

2

Вы должны перезагрузить ваши $_SESSION значения ... Это может быть достигнуто путем создания страницы logout.php и имеет функции session_start(); session_destroy();. Ваша страница входа должна быть обновлена, чтобы иметь правильные данные сеанса.

+0

Я уже это делаю. мой logout.php включает эти строки, как я сказал в вопросе. Session_start() вызывается при входе в страницу. – Kevin

+1

На странице входа вы устанавливаете значения DB в '$ _SESSION'?Это то, что я пытаюсь сделать. –

+1

Спасибо, похоже, я понял это. Я устанавливаю некоторые из значений, но не другие. – Kevin

3

Я не согласен с вашим рабочим процессом и не буду использовать этот метод. во всем, что связано с пользователем, я доверяю только последним данным из БД (или аутентифицирующему органу, в случае OAuth или OpenId, например), никогда не хранит данные сеанса.

Я бы запросил DB каждый раз, когда мне нужна критическая информация, такая как userdata. пользователь может изменить свое имя в середине сеанса, и это должно отражаться в реальном времени вашей системой.

Я бы также воздержался от OR DIE. рассмотрите возможность использования try...catch и обработки ошибки.

try { 
    include ('ConnectionData.php'); // user, pass, db, localhost 
    $sqlGetId = "SELECT etcetcetc"; 
    $sqlResultGetId = mysql_query($sqlGetId); 
    $rowGetId = mysql_fetch_array($sqlResultGetId); 
    if ($rowGetId[0] > 0) { 
    // consume data 
Смежные вопросы