Try this out:
form script:
PHP Code:
<?php
include('config.php');
//start session
session_start();
$login_form = "
<div id='login'>
<form name='login' action='$web_root/member/login/login.php' method='post'>
<span>Username:<input type='text' size='20' name='user' /></span>
<span>Password:<input type='password' size='20' name='pass' /></span>
<span><input type='submit' value='Login' name='login' /><input type='reset' value='Reset' name='reset' /></span>
</form>
<p>Not a member? <a href='signup'>Register Free</a></p>
\n";
if (isset($_SESSION['error'])) {
$message = $_SESSION['error']['message'];
$login_form .= "<p>$message</p>\n";
unset($_SESSION['error']);
}
$login_form .= " </div>
";
if (isset($_SESSION['user'])) { // good idea to always have curly braces, even though there is only 1 line of logic
$user = $_SESSION['user']['id'];
} else {
$user = "Guest";
$logged_in = "
<div id='login'>
<div class='shadowbox'>
<div class='shadowcontent'>
<div class='t'></div><!-- END: div.t -->
<h3>Hello, $user</h3>
Visit <a href='$web_root/member/'>Your Account</a>
<p>Not $user? <a href='$web_root/member/login/logout.php'>Log out</a></p>
</div><!-- END: div.shadowcontent -->
<div class='b'><div></div></div><!-- END: div.b -->
</div><!-- END: div.shadowbox -->
</div>
";
//if (isset($_SESSION['user']['logged_in']) && $_SESSION['user']['logged_in'] == 1) {
if (isset($_SESSION['user']['logged_in']) && $_SESSION['user']['logged_in']) { // == 1 is redundant.
$user = $_SESSION['user']['id'];
$user_status = $logged_in;
} else {
$user_status = $login_form;
}
?>
process script:
PHP Code:
<?php
require_once("config.php");
require_once("$lib/mysql/mysql.class.php");
require_once("$lib/mysql/query.class.php");
require_once("$lib/mysql/config.mysql.php");
require_once("$lib/error.php");
session_start();
$username = $_POST['user'];
$password = $_POST['pass'];
if (empty($username) || empty($password)) {
$_SESSION['error'] = array('message' => "Both fields must be filled", 'action' => "MEMBER_LOGIN");
errorHandle();
}
$db = new MySQL($config);
$q_check = new Query('select');
$q_check->setTable('members');
$q_check->addSelection('password');
$q_check->addCondition('username','=',$username,'s');
$db->executeQuery($q_check);
if ($q_check->num_rows < 1) {
//print_r($_POST);
$_SESSION['error'] = array('message' => "Username or password incorrect.",
'action' => "MEMBER_LOGIN");
} else {
$check = $q_check->results[0]['password'];
if ($check == md5($password)) {
$_SESSION['user'] = array('id' => $username,
'logged_in' => TRUE);
$_SESSION['banner'] = "Login Successful!";
unset($_SESSION['error']);
$host = $_SERVER['HTTP_HOST'];
header("Location: http://$host/$web_root/member"); //need to change to self
exit;
} else {
$_SESSION['error'] = array('message' => "Username or password does not match",
'action' => "MEMBER_LOGIN");
}
}
if (isset($_SESSION['error'])) {
errorHandle();
}
?>
error.php
PHP Code:
<?php
error_reporting(E_ALL);
require_once("config.php");
function errorHandle()
{
if (isset($_SESSION['error'])) {
$action = $_SESSION['error']['action'];
global $web_root; // globals are bad practice. Make $web_root a function argument.
switch($action) {
case "MEMBER_LOGIN":
$host = $_SERVER['HTTP_HOST'];
header("Location: http://$host/$web_root/wdp3-ms3");
exit;
break;
case "UPLOAD_FORM":
$host = $_SERVER['HTTP_HOST'];
header("Location: http://$host/$web_root/wdp3-ms3/upload");
exit;
break;
case "USER_CREATE":
$host = $_SERVER['HTTP_HOST'];
header("Location: http://$host/$web_root/wdp3-ms3/signup");
exit;
break;
}
}
}
?>
Bookmarks