|
|
|
| Здравствуйте! подскажите пожалуйста, как после авторизации направить пользователя на ту же страницу? | |
|
|
|
|
|
|
|
для: uvajs
(24.07.2010 в 09:21)
| |
<?php
header("Location: {$_SERVER['HTTP_REFERER']}");
die;
|
| |
|
|
|
|
|
|
|
для: neadekvat
(24.07.2010 в 11:21)
| | нет... не получится. Как я понял, у него типа на страницах есть ссылка(а не форма) для авторизации. Если перейти по ссылке только там будет форма. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(24.07.2010 в 12:55)
| | Тогда два варианта:
1. На странице с формой HTTP_REFERER еще будет - впихнуть его в поле hidden, а потом соответственно отправить на страницу, указанную в этом поле;
2. Просто перенаправить на главную. | |
|
|
|
|
|
|
|
для: neadekvat
(24.07.2010 в 13:04)
| | Можно взаимно с базой... но это по моему не очень практично. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(24.07.2010 в 13:08)
| | Так, а причем тут база? оО | |
|
|
|
|
|
|
|
для: uvajs
(24.07.2010 в 09:21)
| |
<?php
header("Location: та-же-страница");
die;
|
а при чем тут авторизация? | |
|
|
|
|
|
|
|
для: Trianon
(24.07.2010 в 16:23)
| | >
<?php
>header("Location: та-же-страница");
>die;
|
>
>а при чем тут авторизация?
а где это прописать? | |
|
|
|
|
|
|
|
для: uvajs
(25.07.2010 в 15:31)
| | там, где принимается решение выполнить переход. | |
|
|
|
|
|
|
|
для: Trianon
(26.07.2010 в 08:50)
| | >там, где принимается решение выполнить переход.
У меня за перенаправ. отвечает кусок кода
echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";
| но если заменить код на
header("Location: {$_SERVER['HTTP_REFERER']}");
die;
| выдает ошибки: Warning: Cannot modify header information - headers already sent by (output started at Z:\home\engells.com\www\enter.php:13) in Z:\home\engells.com\www\enter.php on line 105
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\engells.com\www\enter.php:13) in Z:\home\engells.com\www\enter.php on line 106
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\engells.com\www\enter.php:13) in Z:\home\engells.com\www\enter.php on line 107
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\engells.com\www\enter.php:13) in Z:\home\engells.com\www\enter.php on line 118
хотя в файле exit.php, т.е. выход из сессии работает нормально этот код. | |
|
|
|
|
|
|
|
для: uvajs
(26.07.2010 в 09:50)
| | это говорит о том, что заголовки уже отправлены...
или же есть вывод информации отличной от заголовка...
это может произойти из-за того, что где то в скрипте, раньше headers() уже есть вывод информации при помощи echo(), print() или есть пробельные символы вне тегов <?php ?>.
Можно избежать этой ошибки если включить буферизацию вывода.
Если у Вас за перенаправление отвечает echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>"; ну так и используйте её для всех перенаправления, которые Вам нужны, естественно меняя имя файла на который надо сделать перенаправление. | |
|
|
|
|
|
|
|
для: Slo_Nik
(26.07.2010 в 10:24)
| | <echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";
Прописать этот код во всех файлах?
>это может произойти из-за того, что где то в скрипте, раньше headers() уже есть вывод информации при помощи echo(), print() или есть пробельные символы вне тегов <?php ?>.
не думаю, что тут есть headers(). вот этот файл
<?php
session_start();
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
?>
<html>
<head>
<title>Ошибка при регистрации</title>
<link href="style.css" rel="stylesheet" type="text/css">
<link href="style2.css" rel="stylesheet" type="text/css">
<meta name="keywords" content="<?php echo $myrow["meta_k"];?>">
<meta name="description" content="<?php echo $myrow["meta_d"];?>">
<script type="text/javascript" src="js/swfobject.js"></script>
<link rel="icon" href="http://engells.com/favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="http://engells.com/favicon.ico" type="image/x-icon">
</head>
</html>
<div id="icon_save"><img src="img/warning.jpg" width="80" height="80"></div>
<?
if (empty($login) or empty($password)) {
exit ("<p class='reg_error'>Вы ввели не всю информацию, вернитесь назад и заполните все поля!</p>");
}
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);
// дописываем новое********************************************
// подключаемся к базе
include ("block/bd.php");
// минипроверка на подбор паролей
$ip=getenv("HTTP_X_FORWARDED_FOR");
if (empty($ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); }
mysql_query ("DELETE FROM oshibka WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 900");//удаляем ip-адреса ошибавшихся при входе пользователей через 15 минут.
$result = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);// извлекаем из базы колличество неудачных попыток входа за последние 15 минут у пользователя с данным ip
$myrow = mysql_fetch_array($result);
if ($myrow['col'] > 10) {
exit ("<p class='reg_error'>Вы набрали логин или пароль неверно 3 раза. Подождите 15 минут до следующей попытки.</p>");
}
$password = md5($password);//шифруем пароль
$password = strrev($password);// для надежности добавим реверс
$password = $password."b3p6f";
$result = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow = mysql_fetch_array($result);
if (empty($myrow['id']))
{
$select = mysql_query ("SELECT ip FROM oshibka WHERE ip='$ip'");
$tmp = mysql_fetch_row ($select);
if ($ip == $tmp[0]) {
$result52 = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);
$myrow52 = mysql_fetch_array($result52);
$col = $myrow52[0] + 1;//Если есть,то приплюсовываем количесво
mysql_query ("UPDATE oshibka SET col=$col,date=NOW() WHERE ip='$ip'");
}
else {
mysql_query ("INSERT INTO oshibka (ip,date,col) VALUES ('$ip',NOW(),'1')");
}
exit ("<p class='reg_error'>Извините, введённый вами логин или пароль неверный.</p>"); //останавливаем выполнение сценариев
}
else {
$_SESSION['password']=$myrow['password'];
$_SESSION['login']=$myrow['login'];
$_SESSION['id']=$myrow['id'];
if (isset($_POST['save'])){
setcookie("login", $_POST["login"], time()+9999999);
setcookie("password", $_POST["password"], time()+9999999);
setcookie("id", $myrow['id'], time()+9999999);
}
if (isset($_POST['autovhod'])){
//Если пользователь хочет входить на сайт автоматически
setcookie("auto", "yes", time()+9999999);
setcookie("login", $_POST["login"], time()+9999999);
setcookie("password", $_POST["password"], time()+9999999);
setcookie("id", $myrow['id'], time()+9999999);}
}
header("Location: {$_SERVER['HTTP_REFERER']}");
die;
//перенаправляем пользователя на главную страничку, там ему и сообщим об удачном входе
?>
|
| |
|
|
|
|
|
|
|
для: uvajs
(26.07.2010 в 10:36)
| | Вы внимательно прочли то, что я Вам написал?
Перечитайте ещё раз и внимательно посмотрите на Ваш код. | |
|
|
|
|
|
|
|
для: Slo_Nik
(26.07.2010 в 10:50)
| | Послушайте, кого Вы пытаетесь вразумить?
Явно ж видно, что код чужой (это помимо того, что насквозь гнилой), и что автор в нем ни полбуквы не понимает.
Однако ж тем не менее, туда же. Авторизацию писать. | |
|
|
|
|
|
|
|
для: Trianon
(26.07.2010 в 11:44)
| | >Послушайте, кого Вы пытаетесь вразумить?
>Явно ж видно, что код чужой (это помимо того, что насквозь гнилой), и что автор в нем ни полбуквы не понимает.
>Однако ж тем не менее, туда же. Авторизацию писать.
я и не говорил, что сам написал. это просто готовы скрипт я реализовал на сайте. | |
|
|
|
|
|
|
|
для: uvajs
(26.07.2010 в 12:02)
| | Так а я не к тому, что код не Вами написан. Это, в конце концов, сплошь и рядом.
Я к тому, что Вы слепо скопировали код, не поняв в нем ничего.
Код этот наполнен потенциальными ошибками и приемами, не выдерживающими никакой критики, чуть более, чем полностью.
И Вы пишете - реализовал. Если реализовали Вы - значит Вы отвечаете за то, как он работает?
А как Вы можете отвечать, если не понимаете, зачем в нем применена половина конструкций?
И ладно бы какая-нибудь фигня малосущественная.
А тут скрипт авторизации. А скрипт авторизации, в отличие от много чего другого, работает с паролями - то есть данными, которые Вам, как разработчику системы, как владельцу ресурса, не принадлежат. | |
|
|
|
|
|
|
|
для: Trianon
(26.07.2010 в 12:50)
| | как разработчику системы, как владельцу ресурса, не принадлежат
ну это чаще всего решается пользовательским соглашением типа:
"админисрация ответственности не несёт..." | |
|
|
|
|
|
|
|
для: Slo_Nik
(26.07.2010 в 10:24)
| | >это говорит о том, что заголовки уже отправлены...
>или же есть вывод информации отличной от заголовка...
>это может произойти из-за того, что где то в скрипте, раньше headers() уже есть вывод информации при помощи echo(), print() или есть пробельные символы вне тегов <?php ?>.
я Вас не совсем понимаю. где у меня headers()? и я не вижу пробельные символы...
>Можно избежать этой ошибки если включить буферизацию вывода.
Можно подробнее? | |
|
|
|
|
|
|
|
для: uvajs
(26.07.2010 в 11:12)
| | >Можно подробнее?
подробней в руководстве по php или в google, ищите информацию о буферизации вывода
>я Вас не совсем понимаю. где у меня headers()? и я не вижу пробельные символы...
вывод информации перед посылкой заголовков при помощи headers()
пробельный символ это как вариант появления ошибки. что может ещё вызвать такую ошибку я тоже Вам написал и у Вас в коде это есть. читайте внимательно | |
|
|
|
|
|
|
|
для: uvajs
(24.07.2010 в 09:21)
| | <form action="" ....> | |
|
|
|
|
|
|
|
для: uvajs
(24.07.2010 в 09:21)
| | Если Вы хотите перенаправить пользователя на другую страницу после отправки заголовков, то воспользуйтесь JS:
<?php
echo "<script>window.location.href = 'http://www.google.com';</script>";
?>
|
| |
|
|
|
|
|
|
|
для: bishake
(26.07.2010 в 10:56)
| | Во-первых, ТС скорее всего так и будет отправлять в гугл
Во-вторых, не нужен такой страшный костыль. Проблема "header already sent" вознкиает при неправильном проектировании, и если она вылезла - надо менять логику приложения.
Ну или буферизацию использовать.. | |
|
|
|
|
|
|
|
для: neadekvat
(26.07.2010 в 12:53)
| | >Во-вторых, не нужен такой страшный костыль.
>Проблема "header already sent" вознкиает при неправильном проектировании, и если она вылезла - надо менять логику приложения.
Вот именно.
>Ну или буферизацию использовать..
Буферизация - тоже костыль. | |
|
|
|
|
|
|
|
для: Trianon
(26.07.2010 в 13:31)
| | Все заработало! просто пробелы были в файле, где подключение к базе. Спасибо всем! | |
|
|
|
|
|
|
|
для: uvajs
(26.07.2010 в 14:44)
| | вот это и есть как раз те самые пробельные символы. | |
|
|
|