登录后无法获取用户信息

时间:2015-03-31 14:25:28

标签: php sql

以下页面仅在用户登录时打开

members.php

    <?php
require('includes/config.php');

//if not logged in redirect to login page
if (!$user->is_logged_in()) {
    header('Location: login.php');
}

//define page title
$title = 'Members Page';

//include header template
require('layout/header.php');
?>

<div class="container">

    <div class="row">

        <div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
            <h2>Member only page - Welcome <?php echo $_SESSION['username']; ?></h2>
            <p><a href='logout.php'>Logout</a></p>
            <hr>

        </div>
    </div>
        <?php
   // DATABASE INFORMATION
$server = '';
$database = '';
$dbuser = '';
$dbpassword = '';

//CONNECT TO DATABASE
$connect = mysql_connect("$server", "$dbuser", "$dbpassword")
    OR die(mysql_error());
   mysql_select_db("$database", $connect);
//ALWAYS ESCAPE STRINGS IF YOU HAVE RECEIVED THEM FROM USERS

$safe_username = mysql_real_escape_string($_SESSION['username']);
//FIND AND GET THE ROW
$getit = mysql_query("SELECT * FROM members WHERE username='$safe_username'", $connect);
$row = mysql_fetch_array($getit);

//YOUR NEEDED VALUES
$bio1 = $row['active'];
$bio = $row['email'];
    ?> 

SQL

CREATE TABLE `members` (
  `memberID` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(60) NOT NULL,
  `email` varchar(255) NOT NULL,
  `active` varchar(255) NOT NULL,
  `resetToken` varchar(255) DEFAULT NULL,
  `resetComplete` varchar(3) DEFAULT 'No',
  PRIMARY KEY (`memberID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

此处用户名存储在会话

所以我使用php的第二部分来获取用户emailactive

但我得到以下错误

Internal Server Error

有人可以帮我解决错误吗? 在成功登录后,members.php应显示email

中的用户SQL

2 个答案:

答案 0 :(得分:1)

这意味着表ID中不存在members列您确定拼写一切正确吗?您确定您正在使用的数据库也称为members吗?对我来说,将数据库和表命名为相同,这似乎很奇怪。 我还注意到你的会话被调用:$_SESSION['username']这让我觉得它包含一个字符串而且这个列叫做id,这让我觉得它是一个整数

<强>结论:

您与mysql的连接有问题。我们不知道是什么,因为我们不知道你的桌子是什么样的。采取的步骤:

  1. 检查列id是否存在
  2. 检查您正在使用的表格是否被调用:members
  3. 检查您正在使用的数据库是否被调用:members
  4. 确保您确实将正确的值与正确的列进行比较。
  5. <强> Offtopic: 没有冒犯,但 如果你不能自己解决这个错误,我建议你实际上学习更多的PHP

答案 1 :(得分:0)

  1. 停止使用mysql_并移至mysqli_或PDO

  2. 可能会将您的mysql_numrows更改为mysql_num_rows。

    $ num = mysql_num_rows($ query)或die(mysql_error());

  3. 让我知道结果。

    无法将其置于评论中。