如何在php中获取会话ID或用户名?

我有一个用户可以登录的网站.我试过:

<?PHP echo $_SESSION ['userlogin']

用户登录时,我将其会话设置为userlogin,但不会显示用户名.
This is the tutorial I used

解决方法

你使用它之前有 start the session吗?

所以设置它:

<?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'];
?>

编辑

有关如何创建loginform的更多信息..您说您尝试设置$_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'cize'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";
   }
?>

如果不为你编写完整的代码,我无法更清楚.所以我希望这会对你有所帮助.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...