2014-10-28 2 views
0

У меня возникла проблема при использовании сеансов для восстановления данных, хранящихся в базе данных mySQL. Это мой код:PHP - Вызов информации, хранящейся в базе данных с использованием сеансов

Страница входа проста, введите имя пользователя и пароль (я знаю, что пароль по-прежнему остается открытым, я планирую его позднее изменить).

<?php 
$host="localhost"; 
$user="root"; 
$pass=""; 
$db_name="proyek"; 
$tbl_name="murid"; 
mysql_connect("$host", "$user", "$pass")or die("Cannot connect to SQL."); 
mysql_select_db('$db_name'); 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <title></title> 
    </head> 

    <body> 
     <div id="header"> 
      LOGO 
      <h1 align="center">TITLE</h1> 
     </div> 
     <br/> 
     <div id="login"> 
      <form id="loginform" name="loginform" method="post" action="checklogin.php"> 
       <table border="0" align="center"> 
        <tr> 
         <td>NIS</td> 
         <td></td> 
         <td><input type="text" name="nislogin" id="nislogin"/></td> 
        </tr> 
        <tr> 
         <td>Password</td> 
         <td></td> 
         <td><input type="password" name="pwdlogin" id="pwdlogin"/></td> 
        </tr> 
        <tr> 
         <td colspan="3" align="center"><input type="submit" name="loginbutton" id="loginbutton" value="Login"/></td> 
        </tr> 
       </table> 
      </form> 
     </div> 
    </body> 
</html> 

и это код для проверки Логина страницы:

<?php 
session_start(); 
$host="localhost"; 
$user="root"; 
$pass=""; 
$db_name="proyek"; 
$tbl_name="murid"; 
mysql_connect("$host", "$user", "$pass")or die("Cannot connect to SQL."); 
mysql_select_db('$db_name'); 

$nis=($_POST['nislogin']); 
$pwd=($_POST['pwdlogin']); 
$sql="SELECT * FROM murid WHERE nis='$nis' and password='$pwd'"; 
$result=mysql_query($sql); 
$count=mysql_num_rows($result); 
if($count==1) 
{ 
    $_SESSION['nislogin']=$nis; 
    $nama=$result['nama']; 
    $_SESSION['nama']=$nama; 
    header("location:index.php"); 
    return true; 
    exit; 
} 
else 
{ 
    echo("Wrong NIS or password."); 
    return false; 
} 
?> 

я ввел некоторые фиктивные данные в базе данных для целей тестирования; id, пароль, имя. как я могу что-то вспомнить из базы данных, пока пользователь только вводит имя пользователя/id?

Я хотел бы показать что-то вроде «hello, name» на следующей странице. Помощь приветствуется.

Редактировать: Я редактировал свой код на основе отзывов, и он создает пустое; как «Привет,» без имени.

+0

Если вы хотите, чтобы отобразить имя, лучше добавить его к сессии, а так, что вы можете получить доступ к нему без необходимости запрашивать базу данных снова в следующем стр. – jeroen

+0

как $ _SESSION ['name'] = $ result ['name']? см. выше. –

+0

Да, если 'name' - это столбец в вашей таблице, конечно. – jeroen

ответ

0

Прежде всего, поскольку вы выполняете запрос на странице проверки входа, используйте это значение для своего сеанса, а не данные сообщения. Кроме того, всякий раз, когда вы перенаправляете, всегда выходите из сценария.

EDIT:

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

$sql="SELECT * FROM murid WHERE nis='$nis' and password='$pwd'"; 
$result=mysql_query($sql); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
$count=mysql_num_rows($result); 
if($count==1) 
{ 
    $data=mysql_fetch_assoc($result); // since you are only accessing one row, 
    // otherwise you would put this in a loop to build your array. 

    session_start(); 
    $_SESSION['nislogin']=$data['nis']; 
    header("location:index.php"); 
    return true; 
    exit; 
} 

Я также вижу эту сессию на странице входа в систему, но я не вижу, что вы когда-либо созданных, и я не вижу цели.

if(isset($_SESSION['nama'])) 
{ 
unset($_SESSION['nama']); 
} 

В основном все, что вам нужно здесь, чтобы начать сессию index.php и выводит его.

index.php

session_start(); 
if(isset($_SESSION['nislogin'])) 
{ 
$name = $_SESSION['nislogin']; 
} else { 
$name = "stranger"; 
} 

<body> 
Welcome, <?=$name?> 
</body> 
+0

Спасибо за ответ, мне нужно разместить session_start() прямо на index.php или странице, которая проверяет логин? Поскольку в этом сеансе страницы сначала создается. И у меня есть таблица с столбцом имени на ней, мне нужно позвонить, вместо этого присваивая переменную имени строке. –

+0

Вам нужно 'session_start()' где угодно, чтобы использовать сеанс. Итак, сначала на странице она была создана, затем также на любой странице, где вам нужно ее использовать (index.php). – EternalHour

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