Когда попадаешь на эту страничку, то появляется окно авторизации с логином, паролем, после того как их вводишь, оно по идее должно переходить на страницу авторизованного пользователя, но почему-то оно не переходит, а остается там же вместе с окном авторизации снова.
<?php
session_start();
//Поключаем конфиг
include("config.inc.php");
//Необходимо подключиться к БД
$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Can't connect" );
// сделать $DB текущей базой данных
mysql_select_db($DB, $link) or die ("Can't select BD");
//Если нет сессий
if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {
//Если кнопка не нажата, отображаем форму
if(!$_POST['do']){
echo '<form name="1" action="" method="post">
email:<input name="email" type="text" value=""> <br/>
password:<input name="password" type="password" value=""> <br/>
<input name="do" type="submit" value="Login">
</form><br/><a href="reg.php"/>Registration</a>';
}
//Если кнопка нажата
if($_POST['do']) {
//Проверяем данные
$email = $_POST['email'];
$password = md5($_POST['password']);
if($email !='' AND $password !='') {
//Создаем запрос
$q1=mysql_query("SELECT * FROM users WHERE email='".$email."'AND password='".$password."'AND status= 1");
//Проверяем существует ли хоть одна запись
if(mysql_num_rows($q1) === 1) {
//Если есть, то создаем сессии и перенаправляем на эту страницу
$r1=mysql_fetch_array($q1);
$_SESSION['user'] = $r1['email'];
$_SESSION['password'] = $r1['password'];
$_SESSION['nick'] = $r1['nick'];
$_SESSION['SID'] = md5(crypt($r1['user'],$r1['password']));
@Header("Location: index.php");
}
else {echo 'Invalid email / password; Maybe your account is not activated<br/><a href="index.php"/>Back</a>
<br/><a href="reg.php"/>Registration</a>';}
}
else {echo 'type your email and password' ;}
}
else {echo '<br/><a href="lostpass.php">lost your password?</a>';}
}
else {
$q2 = @mysql_query("SELECT * FROM users WHERE nick='".$_SESSION['nick']."' AND email='".$_SESSION['user']."' AND password='".$_SESSION['password']."' AND status = 1");
if(@mysql_num_rows($q2)==1){
$r2 = @mysql_fetch_array($q2);
echo 'You are: '.ucfirst($r2['nick']).'<br/>';
echo 'Your email: '.ucfirst($r2['email']).'<br/>';
echo '<a href="index.php">Home</a> ';
echo '<a href="index.php?page=downloads">Downloads</a><br/>';
echo $_GET['page'];
if($_GET['page'] !='') {
@include("tpl/".$_GET['page'].".php");
}
else { @include("tpl/default.php");}
echo '<br/><br/><a href="index.php?exit=1">Logout</a>';
}
}
if($_GET['exit']) {@session_destroy(); unset($_GET['exit']); mysql_close($link); @Header("Location: index.php");}
?>
Спустя 30 минут, 16 секунд (19.08.2010 - 13:31) Basili4 написал(а):
перед этим делай так
print_r($_POST) будет видно что пришло
if(!$_POST['do']){
З.Ы. Сессия здесь не причем
print_r($_POST) будет видно что пришло
if(!$_POST['do']){
З.Ы. Сессия здесь не причем
Спустя 6 часов, 38 минут, 6 секунд (19.08.2010 - 20:09) flint написал(а):
то что ты посоветовал показывает мне то что я ввожу.
просто дело в том что если отключить строку
так вот
создает сессию но почему она не проходит проверки по этому скрипту ???
написал много но это чтоб облегчить понимания сути моей проблемы спасибо что прочли =)
просто дело в том что если отключить строку
if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {и убрать else вот так =>
<?phpто будет видно что он скрипт нас "узнает" и пропускает далее к скрытым ссылкам (вобщемто дело не в ссылках это не суть важно просто нужен вроде личного кабинета что то)
session_start();
//Поключаем конфиг
include("config.inc.php");
//Необходимо подключиться к БД
$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Can't connect" );
// сделать $DB текущей базой данных
mysql_select_db($DB, $link) or die ("Can't select BD");
//Если нет сессий
//
//if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {
//print_r($_POST);
//Если кнопка не нажата, отображаем форму
if(!$_POST['do']){
echo '<form name="1" action="" method="post">
email:<input name="email" type="text" value=""> <br/>
password:<input name="password" type="password" value=""> <br/>
<input name="do" type="submit" value="Login">
</form><br/><a href="reg.php"/>Registration</a>';
}
//Если кнопка нажата
if($_POST['do']) {
//Проверяем данные
$email = $_POST['email'];
$password = md5($_POST['password']);
if($email !='' AND $password !='') {
//Создаем запрос
$q1=mysql_query("SELECT * FROM users WHERE email='".$email."'AND password='".$password."'AND status= 1");
//Проверяем существует ли хоть одна запись
if(mysql_num_rows($q1) === 1) {
//Если есть, то создаем сессии и перенаправляем на эту страницу
$r1=mysql_fetch_array($q1);
$_SESSION['user'] = $r1['email'];
$_SESSION['password'] = $r1['password'];
$_SESSION['nick'] = $r1['nick'];
$_SESSION['SID'] = md5(crypt($r1['user'],$r1['password']));
@Header("Location: index.php");
}
else {echo 'Invalid email / password; Maybe your account is not activated<br/><a href="index.php"/>Back</a>
<br/><a href="reg.php"/>Registration</a>';}
}
else {echo 'type your email and password' ;}
}
else {echo '<br/><a href="lostpass.php">lost your password?</a>';}
//}
//else {
$q2 = @mysql_query("SELECT * FROM users WHERE nick='".$_SESSION['nick']."' AND email='".$_SESSION['user']."' AND password='".$_SESSION['password']."' AND status = 1");
if(@mysql_num_rows($q2)==1){
$r2 = @mysql_fetch_array($q2);
echo 'You are: '.ucfirst($r2['nick']).'<br/>';
echo 'Your email: '.ucfirst($r2['email']).'<br/>';
echo '<a href="index.php">Home</a> ';
echo '<a href="index.php?page=downloads">Downloads</a><br/>';
echo $_GET['page'];
if($_GET['page'] !='') {
@include("tpl/".$_GET['page'].".php");
}
else { @include("tpl/default.php");}
echo '<br/><br/><a href="index.php?exit=1">Logout</a>';
}
//}
if($_GET['exit']) {@session_destroy(); unset($_GET['exit']); mysql_close($link); @Header("Location: index.php");}
?>
так вот
$_SESSION['SID'] = md5(crypt($r1['user'],$r1['password']));
создает сессию но почему она не проходит проверки по этому скрипту ???
if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {
написал много но это чтоб облегчить понимания сути моей проблемы спасибо что прочли =)
Спустя 1 час, 5 минут, 29 секунд (19.08.2010 - 21:14) linker написал(а):
print_r($_SESSION); и все станет понятно. Версия PHP какая?
Обожаю такие конструкции
Обожаю такие конструкции
include ("tpl/" . $_GET['page'] . ".php")
Спустя 17 минут, 55 секунд (19.08.2010 - 21:32) flint написал(а):
версия 5.2.13
Спустя 21 минута, 26 секунд (19.08.2010 - 21:54) linker написал(а):
Тогда нормально, но print_r($_SESSION) что дает?
Спустя 7 минут, 6 секунд (19.08.2010 - 22:01) flint написал(а):
Array ( [user] => email@email.com [password] => 202cb962ac59075b964b07152d234b70 [nick] => user [SID] => 2d2caef08d6684a5c6212b4c09494aef )
Спустя 21 минута, 19 секунд (19.08.2010 - 22:22) flint написал(а):
щас проанализировал результаты я кажется нашел в чем проблема :
в этой строке хоть $_SESSION['user'] и $_SESSION['password'] берутся верные но после функции md5(crypt($_SESSION['user'],$_SESSION['password'])) он не соответствует $_SESSION['SID']
вообще этот скрипт из урока по созданию регистрации и он работает как надо но только тогда когда мы используем как логин юзернэйм а не почту как у меня
if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {
в этой строке хоть $_SESSION['user'] и $_SESSION['password'] берутся верные но после функции md5(crypt($_SESSION['user'],$_SESSION['password'])) он не соответствует $_SESSION['SID']
вообще этот скрипт из урока по созданию регистрации и он работает как надо но только тогда когда мы используем как логин юзернэйм а не почту как у меня
Спустя 22 минуты, 25 секунд (19.08.2010 - 22:45) flint написал(а):
нашел в чем была проблема проблема была действительно в строке
здесь нехватало скобок
вот верный вариант
Всем большое спасибо за ответы
if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {
здесь нехватало скобок
вот верный вариант
if((md5(crypt($_SESSION['user'],$_SESSION['password']))) != $_SESSION['SID']) {
Всем большое спасибо за ответы