[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сессии проблема
frog
Всем привет.
Ребят нужна помощь с сессиями..описываю проблему,заранее скажу что я новечек в этом и вообщем описываю..есть страница где я могу добавлять в базу данных запись..и надо сделать так чтобы на эту страницу могли заходить только авторизированные пользователи, в случае чего пользователь видет только форму для авторизации..
У меня вообещем это все и получилось сделать,но вот проблема..что при каждом добавлении сессия обрывается и надо заново авторизироваться..я что то запутался...помогите пожалуйста..как сделать правильное условие на страницу где форма добавления в базу данных...
у меня идет переход после того как я заполнил форму на страницу обработчика от туда перенаправление опять же на форму ..но вот после того как идет перенаправление сессия сбивается и приходится заново логинится...как этого избежать?...вот мой код который идет вначале формы заполнения в базу данных

<?
session_start();

if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("<link rel='stylesheet' type='text/css' href='style.css'/>
<form action='insert.php' method='post'>
<p class=
\"in1\">Login:</p><br>                 <input name='login' size='34' maxlength='32' class='input' type='text'> <br> <br>
<p class=
\"in2\">Password:</p>                 <input name='password' size='34' maxlength='33' class='input' type='password'> <br>
<br>          
                
<input name='submit' type='submit' value='Авторизация'></form>"
);
}

//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);


include ("config1.php");


$result123 = mysql_query("SELECT * FROM users WHERE login='$login'"); //извлекаем из базы все данные о пользователе с введенным логином
$myrow123 = mysql_fetch_array($result123);


if ($myrow123['password']==$password) {
//если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!

$_SESSION['login'] = $myrow123['login'];

$_SESSION['password'] = $myrow123['password'];


echo "<p class=\"p71\">". $_SESSION['login']. "</p>" ;






}


else
{
exit ("<link rel='stylesheet' type='text/css' href='style.css'/>
<form action='insert.php' method='post'>
<p class=
\"in1\">Login:</p><br>                 <input name='login' size='34' maxlength='32' class='input' type='text'> <br> <br>
<p class=
\"in2\">Password:</p>                 <input name='password' size='34' maxlength='33' class='input' type='password'> <br>
<br>          
     
<input name='submit' type='submit' value='Авторизация'></form>"
);
}



?>





Спустя 38 минут, 8 секунд (23.05.2012 - 14:55) inpost написал(а):
Если у тебя прописано везде session_start(), то она не будет обрываться, а будет жить ~23 минуты с момента последней активности.
А вообще, код надо показывать и более точно описать действие, которое обрывает работу сессии.

Спустя 32 минуты, 28 секунд (23.05.2012 - 15:27) frog написал(а):
код дописал выше

Спустя 30 минут, 47 секунд (23.05.2012 - 15:58) inpost написал(а):
в нём проблем нет. Другие места мб?

Спустя 2 часа, 3 минуты, 55 секунд (23.05.2012 - 18:02) frog написал(а):
да нет..вот щас кажу весь код страницы которая была выше
<?
session_start();

if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("<link rel='stylesheet' type='text/css' href='style.css'/>
<form action='insert.php' method='post'>
<p class=
\"in1\">Login:</p><br>                 <input name='login' size='34' maxlength='32' class='input' type='text'> <br> <br>
<p class=
\"in2\">Password:</p>                 <input name='password' size='34' maxlength='33' class='input' type='password'> <br>
<br>          
                
<input name='submit' type='submit' value='Авторизация'></form>"
);
}

//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);


include ("config1.php");


$result123 = mysql_query("SELECT * FROM users WHERE login='$login'"); //извлекаем из базы все данные о пользователе с введенным логином
$myrow123 = mysql_fetch_array($result123);


if ($myrow123['password']==$password) {
//если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!

$_SESSION['login'] = $myrow123['login'];

$_SESSION['password'] = $myrow123['password'];


echo "<p class=\"p71\">". $_SESSION['login']. "</p>" ;






}


else
{
exit ("<link rel='stylesheet' type='text/css' href='style.css'/>
<form action='insert.php' method='post'>
<p class=
\"in1\">Login:</p><br>                 <input name='login' size='34' maxlength='32' class='input' type='text'> <br> <br>
<p class=
\"in2\">Password:</p>                 <input name='password' size='34' maxlength='33' class='input' type='password'> <br>
<br>          
     
<input name='submit' type='submit' value='Авторизация'></form>"
);
}



[php]?>

[php]<link rel="stylesheet" type="text/css" href="style.css">
<
meta http-equiv="Refresh" content="3; URL=http://localhost/u4eniki/insert.php">
<
body>
<?php
session_start();

include('config1.php');




$proizvoditel = $_POST ['proizvoditel'];
$tip2 = $_POST ['tip2'];
$model = $_POST ['model'];
$god = $_POST ['god'];
$tip = $_POST ['tip1'];
$cpu = $_POST ['cpu'];
$cpu2 = $_POST ['cpu2'];
$chastota_cpu = $_POST ['chastota_cpu'];
$diskovod = $_POST ['diskovod'];
$interface_hdd = $_POST ['interface_hdd'];
$soprocessor = $_POST ['soprocessor'];
$ram = $_POST ['ram'];
$rom = $_POST ['rom'];
$video_ram = $_POST ['video_ram'];
$text_mode = $_POST ['text_mode'];
$graph_mode = $_POST ['graph_mode'];
$color = $_POST ['color'];
$diskovod2 = $_POST ['diskovod2'];
$interface_hdd2 = $_POST ['interface_hdd2'];
$emkost_hdd2 = $_POST ['emkost_hdd2'];
$io_PORTS = $_POST ['io_PORTS'];
$keyboard = $_POST ['keyboard'];
$powers = $_POST ['POWER_SUPPLY'];
$SIZE_WEIGHT = $_POST ['SIZE_WEIGHT'];
$monitor = $_POST ['monitor'];
$sound_system = $_POST ['sound_system'];
$os = $_POST ['os'];
$PO_komplekt = $_POST ['PO_komplekt'];
$link_opisane = $_POST ['link_opisane'];
$documentacia = $_POST ['documentacia'];
$link = $_POST ['link'];



$uploaddir = "c:/xampp/htdocs/u4eniki/upload/";

$temp=$_FILES['userfile']['name'];

if($_FILES["userfile"]["size"] > 1024*3*1024)
{
echo("<p class=\"go2\">Ошибка при вводе!<p>");
exit;
}

$randa = rand(500, 3000);

$resul13 = $randa.$temp;

$uploadfile = $uploaddir . $resul13;

move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
















$result2 = mysql_query ("INSERT INTO computers (years,tip,cpu,diskovod,interface_hdd,proizvoditel,model,tip_2,cpu_2,Model_chastota_CPU,SOPROCESSOR,R AM,ROM,video_ram,text_mode,graphics_mode,cvet,diskovod_2,Interface_hdd_2,emkost_hdd,io_PORTS,keyboard ,POWER_SUPPLY,SIZE_WEIGHT,monitor,sound_system,os,PO_komplekt,link_opisane,documentacia,image,link) VALUES('$god','$tip','$cpu','$diskovod','$interface_hdd','$proizvoditel','$model','$tip2','$cpu2','$chastota_cpu','$soprocessor','$ram','$rom','$video_ram','$text_mode','$graph_mode','$color','$diskovod2','$interface_hdd2','$emkost_hdd2','$io_PORTS','$keyboard','$powers','$SIZE_WEIGHT','$monitor','$sound_system','$os','$PO_komplekt','$link_opisane','$documentacia','$resul13','$link')") or die (mysql_error());

if ($result2 == 'TRUE')
{
echo "<p class=\"go1\"> <br>  Запись занесена в базу данных успешно! </p>" ;
}

else
{
echo "<p class=\"go2\">Ошибка при вводе!<p>" ;
}

?>

</body>







Спустя 27 минут, 8 секунд (23.05.2012 - 18:29) inpost написал(а):
<link rel="stylesheet" type="text/css" href="style.css">
<
meta http-equiv="Refresh" content="3; URL=http://localhost/u4eniki/insert.php">
<
body>
<?php
session_start();

Если бы включил вывод ошибок в самом начале скрипта:
<?php
error_reporting(E_ALL);

и в .htaccess:
php_flag display_errors on

То на экране появилась надпись, которая гласила, что session_start() надо писать ДО ЛЮБОГО вывода на экран, то есть в самом начале, а не после вывода тегов link, meta, body...

Спустя 38 минут (23.05.2012 - 19:07) frog написал(а):
хм..спасибо..но все равно проблема не решена....после отправки формы все равно отправляет на форму авторизации как будто я не авторизирован..эх я уже и не знаю что делать...

Спустя 41 минута, 26 секунд (23.05.2012 - 19:49) frog написал(а):
С проблемой справился, дописал условие вначале.

session_start();
if (!empty($_SESSION['login']) or !empty($_SESSION['password'])) {
$_POST['login'] = $_SESSION['login'];
$_POST['password'] = $_SESSION['password'];
}


?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.