[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сессии
Angel Flavor
Имеется простенький скрипт авторизации:
<?php
include_once("connect.php");
if(isset($_POST['submit']))
{
$login = $_POST['login']; //Имя пользователя, введенное в форму
$password = $_POST['password']; // Пароль введенный в форму

//Запрос из базы данных по проверки существования в базе введенного пользователя
//с введенным паролем

$query = "SELECT id, login, password
FROM users
WHERE login ='
{$login}' AND password='{$password}'
LIMIT 1"
;
$sql = mysql_query($query) or die(mysql_error()); //Выполняется запрос
if (mysql_num_rows($sql) == 1)
{
$login = true;
session_start();
$_SESSION['auth']=1;
break;
echo 'Авторизация прошла успешно';
}
else
echo 'Неправильное имя или пароль';
}
?>


Если вводим верные логин и пароль, выдает такую ошибку:
Fatal error: Cannot break/continue 1 level in Z:\home\192.168.0.100\www\avtorization.php on line 21




Спустя 4 минуты, 54 секунды (27.09.2010 - 20:15) Basili4 написал(а):
break; делаешь вне цикла замени его exit или die

Спустя 24 минуты, 42 секунды (27.09.2010 - 20:40) Angel Flavor написал(а):
Basili4
Если exit или die то выводит белый лист. вместо "авторизация прошла успешно".

Спустя 12 минут, 9 секунд (27.09.2010 - 20:52) Ser18 написал(а):
А если не писать ни того ни другого

Спустя 32 минуты, 22 секунды (27.09.2010 - 21:24) Angel Flavor написал(а):
Авторизация прошла успешно
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\192.168.0.100\www\avtorization.php:18) in Z:\home\192.168.0.100\www\avtorization.php on line 20
Авторизация прошла успешно

Спустя 40 минут, 4 секунды (27.09.2010 - 22:04) Guest написал(а):
Angel Flavor

session_start(); - напиши в самом начале каждого документа, документ твой должен начинаться так

<?php
session_start();



Спустя 35 минут, 26 секунд (27.09.2010 - 22:40) Angel Flavor написал(а):
Я добавляю в самое начало файла, который не должны видеть не зарегистрированные пользователи:
<?php 
session_start();
if($_SESSION['auth']!=1)
{
echo('Авторизуйтесь с главной страницы!');
exit;
}
?>


Но по прямой ссылке эта страница все равно открывается и в верхней части ее ошибка:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\192.168.0.100\www\users\index.php:1) in Z:\home\192.168.0.100\www\users\index.php on line 2

Спустя 25 минут, 57 секунд (27.09.2010 - 23:06) Ser18 написал(а):
А много у вас файлов с session_start(); ?

Спустя 4 минуты, 5 секунд (27.09.2010 - 23:10) Angel Flavor написал(а):
Цитата (Ser18 @ 27.09.2010 - 23:06)
А много у вас файлов с session_start(); ?

2 файла. индексы. к остальным доступ не так критичен)

Спустя 8 минут, 46 секунд (27.09.2010 - 23:19) inpost написал(а):
Angel Flavor
$login = true;
session_start();
$_SESSION['auth']=1;

session_start должен идти ОДИН РАЗ и в САМОМ НАЧАЛЕ!
Пишешь <?php session_start();
ДАЛЬШЕ уже весь остальной код. Более сессион-старт делать не надо!

Спустя 19 часов, 7 минут, 55 секунд (28.09.2010 - 18:26) Angel Flavor написал(а):
Авторизуемся и переходим на страничку index.php

 <?php
include_once("connect.php");
if(isset($_POST['submit']))
{
$login = $_POST['login']; //Имя пользователя, введенное в форму
$password = $_POST['password']; // Пароль введенный в форму

//Запрос из базы данных по проверки существования в базе введенного пользователя
//с введенным паролем

$query = "SELECT id, login, password
FROM users
WHERE login ='
{$login}' AND password='{$password}'
LIMIT 1"
;
$sql = mysql_query($query) or die(mysql_error()); //Выполняется запрос
if (mysql_num_rows($sql) == 1)
if (mysql_num_rows($sql) == 1)
{
$login = true;
session_start();
$_SESSION['auth']=1;
echo 'Авторизация прошла успешно';
} else {
$login = false;
session_start();
$_SESSION['auth']=0;
echo 'Неправильное имя или пароль';
}}
?>


Этот код вставляем в index.php, к которому не должно быть доступа незарегитстрированным пользователям. Но он все равно открывается по прямой ссылке, что я делаю не так?
<?php
if($_SESSION['auth']!=1)
{
echo('Авторизуйтесь с главной страницы!');
header("Location: index.php");
exit;
}
?>

Спустя 1 час, 5 минут, 46 секунд (28.09.2010 - 19:32) inpost написал(а):
session_start(); - В САМОМ НАЧАЛЕ!!!!

Спустя 3 часа, 34 минуты, 11 секунд (28.09.2010 - 23:06) Angel Flavor написал(а):
Цитата (inpost @ 28.09.2010 - 19:32)
session_start(); - В САМОМ НАЧАЛЕ!!!!

<?php
session_start();
if($_SESSION['auth']!=1)
{
echo('Авторизуйтесь с главной страницы!');
exit;
}
?>

Вот так ошибку пишет.

Спустя 26 минут, 5 секунд (28.09.2010 - 23:32) Ice написал(а):
Какая ошибка? О том, что сессия не стартуется? Отступов нигде нет? Всё в тютельку? А то некоторые любят код с середины блокнота писать.

Спустя 33 минуты, 26 секунд (29.09.2010 - 00:06) inpost написал(а):
Вот что написано в центре:
$login = true;                  
session_start(); // ЭТО НАЧАЛО?
$_SESSION['auth']=1;

Спустя 1 минута, 16 секунд (29.09.2010 - 00:07) Ice написал(а):
нельзя делать отступы перед <?php
Быстрый ответ:

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