|
|
|
| Мне нужно после авторизации обновить страницу. Т.к. я уже использовал операторы вывода и HTML тэги, то о функции header() можно забыть, потому вопрос - Какой код обновления на JavaScript????
Заранее благодарен! | |
|
|
|
|
|
|
|
для: DiMoN_TD
(02.12.2007 в 01:39)
| | В HTML
<meta http-equiv="refresh" content="0; url=http://www.site.ru/index.html">
|
| |
|
|
|
|
|
|
|
для: DiMoN_TD
(02.12.2007 в 01:39)
| | гм, если вы авторизацию делали не на ajax-е, то функцию header() - вполне можете использовать, только для этого разграничте условием IF разделы с формой регистрации и основным содержимым | |
|
|
|
|
|
|
|
для: retsoul
(02.12.2007 в 01:56)
| | неа, не получается там использовать header()...
да и смотрю JavaScript тоже не помогает... =(
Вот как мне просто ВСЮ СТРАНИЦУ ОБНОВИТЬ ОДИН РАЗ ПОСЛЕ ВВОДА ВЕРНОГО ЛОГИНА И ПАРОЛЯ!!! | |
|
|
|
|
|
|
|
для: DiMoN_TD
(02.12.2007 в 03:32)
| | поместите в хтмл код то, что сказал Faraon | |
|
|
|
|
|
|
|
для: RV
(02.12.2007 в 03:53)
| | в том то и проблема, что у меня почему-то не хочет обновляться ОДИН РАЗ, да и вообще тем методом обновления я пользоваться не могу... вот выкладываю свой код.. можете подсказать из-за чего при вводе логина и пароля, страница как бы отправляет данные, соотвественно обновляется и проходится ещё раз по всей странице, и выдаёт мне ту же самую страницу безо всяких изменений, только уже с пустой формой, а при принудительном обновлении у меня исчезает форма и появляется приветствие как и полагается!?
Хотя я ставлю, что при условии правильного ввода логина и пароля - нужно обновиться с помощью location.reload()
Вот сам код (не пугайтесь что так много файлов, просто проект не маленький будет и я всё разделил на блоки). Конечно я не все файлы выложил, только те, которые отвечают за авторизацию (не регистрацию).
index.php
<?php
include ("blocks/bd.php");
include ("blocks/log.php");
include ("blocks/check.php");
include ("blocks/header.php");
?>
<tr>
<?php include ("blocks/menu.php");?>
</tr>
</table></td>
</tr>
<tr>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<?php include ("blocks/navigation.php");?>
<td width="70%">
<p> Какой-то текст!</p>
</td>
</tr>
</table></td>
</tr>
<tr>
<td> </td>
</tr>
</table>
</body>
</html>
|
log.php
<?php
include ("bd.php");
if (isset($_POST["submit"])) {$submit = $_POST["submit"];}
if (isset($_POST["login"])) {$login = $_POST["login"];}
if (isset($_POST["pass"])) {$pass = $_POST["pass"];}
if (isset($login))
{
function generateCode($lenght = 6)
{
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
$code = "";
$clen = strlen($chars) - 1;
while (strlen($code) < $lenght)
{
$code .= $chars[mt_rand(0,$clen)];
}
return $code;
}
$result = mysql_query("SELECT id, pass FROM users WHERE login='$login'");
$myrow = mysql_fetch_array($result);
if($myrow["pass"] == md5(md5($pass)))
{
$hash = md5(generateCode(10));
mysql_query("UPDATE users SET hash='$hash' WHERE id=$myrow[id]");
setcookie("id", $myrow["id"], time()+60*60*24*30);
setcookie("hash", $hash, time()+60*60*24*30);
}
else
{
print "Вы ввели неправильный логин/пароль";
}
}
?>
|
check.php
<?php
include("bd.php");
if(isset($_COOKIE["id"])) {$id_cook = $_COOKIE["id"];}
if(isset($_COOKIE["hash"])) {$hash_cook = $_COOKIE["hash"];}
if (isset($id_cook) AND isset($hash_cook))
{
$result2 = mysql_query("SELECT * FROM users WHERE id = '$id_cook'");
$myrow2 = mysql_fetch_array($result2);
if (($myrow2["hash"] == $hash_cook) OR ($myrow2["id"] == $id_cook))
{
print "Привет, ".$myrow2["login"].".Всё работает!";
$OK = true;
}
else
{
print "Хм, что-то не получилось";
}
}
else
{
$OK = false;
}
?>
|
header.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table align="center" width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><table width="100%" height="176" border="0" cellspacing="0" cellpadding="0">
<tr height="176">
<td width="80%" class='header'><a href="../index.php"><img src="../img/text.png" width="609" height="94"></a></td>
<td width="20%" class='header'>
<?php
if (!$OK)
{
print "<form method='post' >
<p>
<label><strong>Логин</strong></label><br>
<input class='form_input' name='login' type='text' size='20' maxlength='30'><br>
<label><strong>Пароль</strong></label><br>
<input class='form_input' name='pass' type='password' size='20' maxlength='32'><br>
<input class='form_submit' name='submit' type='submit' value='Вход '><br>
<br><a href='register.php'><input class='form_submit' type='button' value='Зарегистрироваться' onMouseDown='location.reload()'>
</a>
</p>
</form>
</td>";
}
?>
</tr>
|
| |
|
|
|
|
|
|
|
для: DiMoN_TD
(02.12.2007 в 04:39)
| | Так что, кто-то может мне помочь?? | |
|
|
|
|
|
|
|
для: Dimon_td
(02.12.2007 в 13:52)
| | А чем? Зачем вообще нужен JS для этого. Вы не далаете проверки кто к вам зашел - авторизованный пользователь или нет, куда при этом делать перенаправление, для меня вопрос. Если правильно все выстроить, то достаточно будет header(). | |
|
|
|
|
|
|
|
для: sim5
(02.12.2007 в 14:33)
| | что значит не делаю проверки??
Делаю, и за это отвечает check.php | |
|
|
|
|
|
|
|
для: DiMoN_TD
(02.12.2007 в 14:38)
| | А ваш сайт, что начинается с check.php? | |
|
|
|
|
|
|
|
для: sim5
(02.12.2007 в 14:41)
| | нет, он начинается с index.php, а к нему подключается уже и log.php (создаёт кукисы и обновляет БД), и check.php (тут идёт проверка кукисов). Собственно я так вижу структуру авторизации... если у вас есть альтернатива, то подскажите пожалуйста как мне перестроить свой сайт под другую структуру! | |
|
|
|
|
|
|
|
для: DiMoN_TD
(02.12.2007 в 15:56)
| | Ну вот и сделайте проверку в index.php - авторизованный ли пользователь ее открыл или нет. Тогда хидер с того места, где у вас проверяется удачна или нет авторизация, на индексный файл, даст желаемый результат. | |
|
|
|
|
|
|
|
для: sim5
(02.12.2007 в 16:10)
| | ага, понял...
теперь у меня код такой
check.php
<?php
include("bd.php");
if(isset($_COOKIE["id"])) {$id_cook = $_COOKIE["id"];}
if(isset($_COOKIE["hash"])) {$hash_cook = $_COOKIE["hash"];}
if (isset($id_cook) AND isset($hash_cook))
{
$result2 = mysql_query("SELECT * FROM users WHERE id = '$id_cook'");
$myrow2 = mysql_fetch_array($result2);
if (($myrow2["hash"] == $hash_cook) OR ($myrow2["id"] == $id_cook))
{
// print "Привет, ".$myrow2["login"].".Всё работает!";
$OK = true;
header ('index.php'); //обновляет мне страницу, если кукисы совпадают с кукисами в БД
}
else
{
// print "Хм, что-то не получилось";
}
}
else
{
$OK = false;
}
?>
|
Вот. Но тут таки опять проблема, когда я ввожу правильный логин и пароль, у меня всё обновляется и с первого же раза меня впускает в систему, но вот если я ввожу неправильный логин или пароль, то мне выдаёт сл. ошибку:
Вы ввели неправильный логин/пароль
Warning: Cannot modify header information - headers already sent by (output started at z:\home\students.org\www\blocks\log.php:32) in z:\home\students.org\www\blocks\check.php on line 17
|
Хотя странно, ведь он не должен выполнять функцию header т.к. условие ведь не выполняется!!!
Что ж он выдаёт такую ошибку, я не пойму! =\ | |
|
|
|
|
|
|
|
для: DiMoN_TD
(02.12.2007 в 16:54)
| | Проверяйте, да и не только это, обратите внимание:
<?
if (isset($_POST["submit"])) {$submit = $_POST["submit"];}
if (isset($_POST["login"])) {$login = $_POST["login"];}
if (isset($_POST["pass"])) {$pass = $_POST["pass"];}
//а теперь пишем так
echo '<A HREF="main.php?login">GO</A>';
if (isset($_GET['login'])) echo "Login YES!";
//есть над чем подумать
?>
|
| |
|
|
|
|
|
|
|
для: DiMoN_TD
(02.12.2007 в 16:54)
| | Вероятно ошибка возникает из-за того что Вы пытаетесь инициализировать куки переменные после того как на экран выдалась фраза "Вы ввели неправильный логин/пароль".
Функцией setcookie можно пользоваться до того как что то выведено на экран иначе заголовок будет уже сформирован и в куки вы ничего записать не сможете. | |
|
|
|
|
|
|
|
для: wawilon
(03.12.2007 в 10:52)
| | кукисы формируются, а то сообщение выводится как раз, если пароль неверный, соотвественно и кукисы формироваться не будут!
и вообще, что самое интересное, что даже если я указываю в блоке header.php форме action="main.php" (где опять же идёт обработка логина, пароля и кукисов), то при нажатии на клавишу Вход, меня всё равно оставляет на странице index.php!!! ПОЧЕМУ??? Или это из-за кэша страницы??
Проверял в IE 6, там такая же ситуация!! Уже заколебало если быть честным! =( | |
|
|
|
|
|
|
|
для: DiMoN_TD
(03.12.2007 в 13:18)
| | Уважаемый! А почему бы Вам не воспользоваться уже готовым модулем авторизации PEAR? Используйте модуль Auth::Auth в PHP скрипте.Там все есть, и шлепайте свои велосипеды сколько угодно:)))) | |
|
|
|
|
автор: emi (03.12.2007 в 16:10) |
|
|
для: DiMoN_TD
(02.12.2007 в 01:39)
| | если тебе нужна просто перезагрузка страницы жаваскриптом, то вот тебе строчка....
window.history.go(); | |
|
|
|
|
|
|
|
для: emi
(03.12.2007 в 16:10)
| |
window.location.reload();
|
| |
|
|
|