Как я могу получить идентификатор сессии или имя пользователя в php? - PullRequest
3 голосов
/ 02 января 2012

У меня есть веб-сайт, на котором пользователи могут войти. Я пробовал:

<?php echo $_SESSION ['userlogin']

и когда пользователи входят в систему, я устанавливаю их сеанс как userlogin, но он не показывает их имя пользователя.

Это учебник, который я использовал

Ответы [ 3 ]

12 голосов
/ 02 января 2012

Вы запускали сеанс перед его использованием?

Итак, чтобы установить его:

<?php
   //Fetch the username from the database
   //The $login and $password I use here are examples. You should substitute this
   //query with one that matches your needs and variables.
   //On top of that I ASSUMED you are storing your passwords MD5 encrypted. If not,
   //simply remove the md5() function from below.
   $query = "SELECT name FROM users WHERE login='" . mysql_real_escape_string($login) . "' AND password='" . md5($password)  . "'";
   $result = mysql_query($query);

   //Check if any row was returned. If so, fetch the name from that row
   if (mysql_num_rows($result) == 1) {
      $row = mysql_fetch_assoc_assoc($result);
      $name = $row['name'];

      //Start your session
      session_start();
      //Store the name in the session
      $_SESSION['userlogin'] = $name;
   }
   else {
      echo "The combination of the login and password do not match".
   }
?>

И чтобы получить его на другой странице, выполните:

<?php
   //Start your session
   session_start();
   //Read your session (if it is set)
   if (isset($_SESSION['userlogin']))
      echo $_SESSION['userlogin'];
?>

РЕДАКТИРОВАТЬ

Еще немного информации о том, как создать форму входа в систему .. Вы говорите, что пытались установить $_SESSION['user'], но это не сработало.

Так что просто убедитесь, что вы на самом деле сделали session_start(); до этого.Если вы сделали, все должно работать.Если вы не назначите пустую переменную для сеанса.Дважды проверьте, что переменная, которую вы назначаете, на самом деле содержит значение.Например:

<?php
   session_start();
   echo "Assigning session value to: " . $user;
   $_SESSION['user'] = $user;
?>

В уроке, с которым вы связали меня, они делают:

$_SESSION[user]=$_GET[userlogin];

Это означает, что они присваивают значение, которое они получили из своей формы входа, которую они создали здесь:

function loginform() {
   print "please enter your login information to proceed with our site";
   print ("<table border='2'><tr><td>username</td><td><input type='text' name='userlogin' size'20'></td></tr><tr><td>password</td><td><input type='password' name='password' size'20'></td></tr></table>");
   print "<input type='submit' >";    
   print "<h3><a href='registerform.php'>register now!</a></h3>";    
} 

Там вы видите <input type='text' name='userlogin' size'20'>.Но в этой форме нет тега <form></form>.Поэтому вы должны сделать следующее:

<form method="POST" action="index.php">
   <label for="userlogin">Username:</label> <input type="text" id="userlogin" name="userlogin" size="20" />
   <label for="password">Password:</label> <input type="password" id="password" name="password" size="20" />
   <input type="submit" value="login" />   
</form>

Эта форма отправит форму обратно в index.php с userlogin и пароль как $_POST переменных.

В вашем index.php вы можете сделать:

<?php
   //Get variables:
   $login = mysql_real_escape_string($_POST['userlogin']);
   $pass = mysql_real_escape_string($_POST['password']);

   //Check your table:
   $query = "SELECT userlogin FROM users WHERE userlogin = '" . $login . "' AND password='" . $pass . "'";
   $result = mysql_query($query);

   //Check if this user exists:
   if (mysql_num_rows($result) == 1) {
      echo "User exists!";

      //Store the login in the session:
      session_start();
      $_SESSION['userlogin'] = $login;
   }
   else {
      echo "Unknown user";
   }
?>

Я не могу сделать это намного яснее, не написав полностьюкод для вас.Надеюсь, это поможет вам.

1 голос
/ 02 января 2012

поставить session_start (); до эха

0 голосов
/ 02 января 2012

Не показывая больше кода, мы не можем много комментировать, но вы уверены, что вызываете session_start на каждой странице, где вы также используете переменную сеанса?Также убедитесь, что вы используете ту же заглавную букву (userlogin! = UserLogin).

...