PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!
I have been trying to set up a login system that directs a user to a specific page depending on their access level that is set in the database. I'm still new to PHP and the script I've been using keeps returning and error. I have set this up from a sample code I found, but I can't get it to work. If anyone can see whats wrong with this code, please help me. Or if you have any suggestion on how to achieve what I need I'd love to hear them.
The errors are:
Notice: Undefined index: auth_level in c:\inetpub\wwwroot\login\Login.php on line 34
Notice: Undefined index: auth_level in c:\inetpub\wwwroot\login\Login.php on line 37
Notice: Undefined index: auth_level in c:\inetpub\wwwroot\login\Login.php on line 40
<?php
//start sessions
ob_start();
session_start();
//ie error checking
header("Cache-control: private");
//connect to database
mysql_connect("localhost","XXX","XXX");
mysql_select_db("XXX") or die("could not select db");
$username = "";
//extract user information from database
if ($username && $password)
{
// if the user has just tried to log in
$query = "select * from users " . "where username='$username' " . " and passwd='$password' ";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
if (mysql_num_rows($result) >0)
{
// if they are in the database register the user id
$_SESSION['valid_user'] = $row['username'];
$_SESSION['pass'] = $_POST['password'];
$_SESSION['auth_level'] = $row['auth_level'];
}
}
if ($_SESSION['auth_level']==1){
header("Location: Menu1.php");
}
else if($_SESSION['auth_level']==2){
header("Location: Menu2.php");
}
else if($_SESSION['auth_level']==3){
header("Location: Menu3.php");
}
?>
<?php
$query = "SELECT * FROM users WHERE username='$username' AND passwd='$password' ";
?>
#2. Try echoing out $_SESSION['auth_level'] and $row['auth_level'] inside the loop that you set them in. If neither of them output a value then something is wrong, which is probably causing the Undefined Index error.
<?php
if (mysql_num_rows($result) >0)
{
// if they are in the database register the user id
$_SESSION['valid_user'] = $row['username'];
$_SESSION['pass'] = $_POST['password'];
$_SESSION['auth_level'] = $row['auth_level'];
echo $_SESSION['auth_level'] . "<br />";
echo $row['auth_level'];
}
?>
You're right, there is no out put when I run the echo test. I don't know PHP very well. Do you have any idea what the error may be? Any help appreciated.
You are probably just spelling the field name incorrectly. If you have phpMyAdmin (and if not I suggest you get it) then go into the "users" table and check out what the field name is for "auth_level". It may be "auth_lvl" or "authlevel" or some other variation and you just spelled it wrong in you PHP code.