【问题标题】:Get username from the database from current session从当前会话的数据库中获取用户名
【发布时间】:2013-08-24 12:21:14
【问题描述】:

所以一直在网上找了一段时间,并试图按照例子......

我想要做的是让用户登录,然后开始一个我已经测试过的会话,它确实有效,但是我无法从数据库中获取用户名或任何其他数据项。

用户使用用户名和密码登录。然后他们会被引导到具有此代码的另一个页面...

<?php

session_start();
if(!session_is_registered(user_name));

$con = mysql_connect("****","****","****");
            if (!$con)
              {
              die('Could not connect: ' . mysql_error());
              }
       //Finds database
            mysql_select_db("****", $con);

$result = mysql_query("SELECT * FROM fyp_users;");


$first_name = $_SESSION['first_name'];
$_SESSION['views']=200;
header('location:../profile.php');


?>

会话视图只是一个测试,它可以在用户登录时查找并显示数字。然后我尝试进行 first_name 会话。

这也是它随后重定向的页面...

<?php 
$con = mysql_connect("****","****","****");
            if (!$con)
              {
              die('Could not connect: ' . mysql_error());
              }
       //Finds database
            mysql_select_db("****", $con);
?>
<?php
session_start( );

//$result = mysql_query("SELECT * FROM fyp_users;");

?>  

一些 HTML....

<?php

echo "Pageviews=". $_SESSION['views'];
echo "Welcome=" . $_SESSION['$first_name']


?>

它怎么不显示名称,我不知道这是否容易解决,有人可以帮助我吗?

------------------------------更新-- --------------------------------------

HTML 表单

<div class="login">
<form id="login" method="post" action="includes/checklogin.php">
<p>Login</p>
<p>Username</p>
<input name="user_name" id="user_name">
<p>Password</p>
<input name="password" id="password" type="password">
</br>
<input type="submit" name="Submit" value="Login">
</form>
</div>
<!--<img src="images/logo.png" alt="The Community">-->
</div>

checklogin.php

<?php

$con = mysql_connect("****","***","***");
            if (!$con)
              {
              die('Could not connect: ' . mysql_error());
              }
       //Finds database
            mysql_select_db("****", $con);

$user_name=$_POST['user_name']; 
$password=$_POST['password']; 

$user_name = stripslashes($user_name);
$password = stripslashes($password);
$user_name = mysql_real_escape_string($user_name);
$password = mysql_real_escape_string($password);
$sql="SELECT * FROM fyp_users WHERE user_name='{$user_name}' and       password='{$password}'";
$result=mysql_query($sql);



$count=mysql_num_rows($result);

if($count==1) {

session_register("user_name");
session_register("password"); 
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
?>

登录成功,php

<?php

session_start();
if(!session_is_registered(user_name));

$con = mysql_connect("***","****","****");
            if (!$con)
              {
              die('Could not connect: ' . mysql_error());
              }
       //Finds database
            mysql_select_db("*****", $con);

$result = mysql_query("SELECT * FROM fyp_users;");


$first_name = $_SESSION['first_name'];
$password = $_SESSION['password'];
$_SESSION['views']=200;
header('location:../profile.php');


?>

profile.php

<?php
session_start();


echo "Pageviews=". $_SESSION['views'];
echo "Welcome=" . $_SESSION['first_name']


?>

谢谢詹姆斯

【问题讨论】:

  • $_SESSION['first_name'] 而不是$_SESSION['$first_name'],您需要在顶部调用session_start();
  • James,您的登录 HTML 和代码在哪里?这也是一个不需要的行if(!session_is_registered(user_name));,在上面的代码中,我看不到您的用户登录到您的页面,没有 MySQL 可以查找尝试登录的用户,也没有将该用户分配给会话的代码。 您拥有的唯一 MySQL 查询是返回所有用户的查询。
  • 啊,那是问题所在吗?老实说,我只是认为它会起作用。
  • 这可能是问题所在,但没有看到你的其余代码我不能说。
  • 登录表单&lt;div class="login"&gt; &lt;form id="login" method="post" action="includes/checklogin.php"&gt; &lt;p&gt;Login&lt;/p&gt; &lt;p&gt;Username&lt;/p&gt; &lt;input name="user_name" id="user_name"&gt; &lt;p&gt;Password&lt;/p&gt; &lt;input name="password" id="password" type="password"&gt; &lt;/br&gt; &lt;input type="submit" name="Submit" value="Login"&gt; &lt;/form&gt; &lt;/div&gt; &lt;!--&lt;img src="images/logo.png" alt="The Community"&gt;--&gt; &lt;/div&gt;

标签: php


【解决方案1】:
<?php
session_start(); //use this to invoke session variable usage

echo "Pageviews=". $_SESSION['views'];
echo "Welcome=" . $_SESSION['first_name']


?>



if(!session_is_registered(user_name)); // this statement seems incorrect

应该是这样

<?php

session_start();
if(!session_is_registered(user_name)) : // it should be colon with endif at end
// session_is_registered('user_name')  user_name should be within single quotes untill its DEFINED

$con = mysql_connect("****","****","****");
        if (!$con)
          {
          die('Could not connect: ' . mysql_error());
          }
   //Finds database
        mysql_select_db("****", $con);

$result = mysql_query("SELECT * FROM fyp_users;");

$first_name = $_SESSION['first_name'];
$_SESSION['views']=200;
header('location:../profile.php');

endif; // here is end if

?>

因为我认为您使用的是升级版 php,所以可能还有一个原因:

session_is_registered(user_name)

此函数自 PHP 5.3.0 起已弃用,自 PHP 5.4.0 起已移除。

来源:http://php.net/manual/en/function.session-is-registered.php

【讨论】:

  • 请检查你的时间你的小飞象
  • 我在你@Prix之前给出了答案
  • @Prix 我为我的粗鲁行为道歉
  • 仍然没有希望,我已经用更多代码更新了我的原始帖子。
【解决方案2】:

在您的代码中,在第一行包含一个 Session_start。 如果您的代码使用会话,则 Session_start 是必须的。它的作用是,如果存在会话,则恢复现有会话,或者如果不存在会话,则启动新的新会话。

<?php
session_start();


echo "Pageviews=". $_SESSION['views'];
echo "Welcome=" . $_SESSION['first_name'];


?>

【讨论】:

  • 我不在乎,只要它是正确的。 OP 仅缺少 session_start()。我把它放在这里了。
【解决方案3】:

您也已在下一页开始会话 使用

session_start(); 

echo "Pageviews=". $_SESSION['views'];
echo "Welcome=" . $_SESSION['first_name']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多