4

我已经尝试了从将查询存储为变量和使用 fetch_array 的所有方法,但是当我尝试打印 $_SESSION['permission'] 时,它一直只给我输出“Array”。我不知道该怎么做请帮忙。

<?php
session_start(); 
mysql_connect("localhost","",""); 
mysql_select_db("a"); 
if(isset($_SESSION['loggedin']))
{
    header("Location: http://www.mywebsite.com/whatever");
} 
if($_POST['submit'])
{
   $name = mysql_real_escape_string($_POST['username']); 
   $pass = mysql_real_escape_string($_POST['password']); 
   $mysql = mysql_query("SELECT * FROM users WHERE name = '{$name}' AND password = '{$pass}'"); 
   $result = mysql_query("SELECT permission FROM users WHERE name = '{$name}' AND password = '{$pass}'");
   $permission = mysql_fetch_array($result);
   if(mysql_num_rows($mysql) < 1)
   {
     die("Password was incorrect!");
   } 
   $_SESSION['loggedin'] = "YES"; 
   $_SESSION['name'] = $name; 
   $_SESSION['permission'] = $permission;

   header ("Location: http://www.mywebsite.com/whatever"); 
}  
echo "<form type='login.php' method='POST'>
Username: <br>
<input type='text' name='username'><br>
Password: <br>
<input type='password' name='password'><br>
<input type='submit' name='submit' value='Login'>
</form>"; 
?>
4

4 回答 4

0

刚刚编辑了代码的 POST 部分。请记住,您必须获取结果并使用关联数组来获取特定列的值:

if($_POST['submit'])
{
   $name = mysql_real_escape_string($_POST['username']); 
   $pass = mysql_real_escape_string($_POST['password']); 
   $result = mysql_query("SELECT * FROM users WHERE name = '{$name}' AND password = {$pass}'");

   if(!$row = mysql_fetch_array($result))
   {
      die("Password was incorrect!");
   }

   $_SESSION['loggedin'] = "YES"; 
   $_SESSION['name'] = $name; 
   $_SESSION['permission'] = $row['permission'];
   header ("Location: "); 
}

无需运行两次查询。

于 2012-12-11T17:15:54.460 回答
0

您正在将行数组分配给$_SESSION['permission']变量,因此当您打印它时,您会得到数组。尝试在该数组上使用 print_r ,您将看到其中的内容。示例:print_r($_SESSION['permission']); Print 无法打印数组。当您再次看到这种情况时,使用print_rvar_dump找出发生了什么。

于 2014-10-30T19:58:03.237 回答
0

您需要使用循环遍历结果集,

while($row = mysql_fetch_array($result)) {
//use each row value($row) as per your need
}

所以,我相信,你想要实现这样的目标,

if(isset($_POST['submit']))
{
$name = mysql_real_escape_string($_POST['username']); 
$pass = mysql_real_escape_string($_POST['password']); 
$result = mysql_query("SELECT permission FROM users WHERE name = '{$name}' AND password                                 = {$pass}'"); 
$permission = mysql_fetch_array($result);
$mysql = mysql_query("SELECT * FROM users WHERE name = '{$name}' AND password =     '{$pass}'"); 
if(mysql_num_rows($mysql) < 1)
{    
 die("Password was incorrect!");
} 

$_SESSION['loggedin'] = "YES"; 
$_SESSION['name'] = $name; 
$i = 0;
while($row = mysql_fetch_array($result)) {    
$_SESSION['permission' . $i] = $row;
$i++;
}
  header ("Location: "); 
 } 
于 2012-12-11T17:07:42.023 回答
0

如果$row是查询的结果,您需要指定一列,例如$_SESSION['permission'] = $row[column_name];

于 2012-12-11T17:10:41.083 回答