Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обновление страницы с помощью JavaScript
 
 автор: DiMoN_TD   (02.12.2007 в 01:39)   письмо автору
 
 

Мне нужно после авторизации обновить страницу. Т.к. я уже использовал операторы вывода и HTML тэги, то о функции header() можно забыть, потому вопрос - Какой код обновления на JavaScript????

Заранее благодарен!

   
 
 автор: Faraon   (02.12.2007 в 01:48)   письмо автору
 
   для: DiMoN_TD   (02.12.2007 в 01:39)
 

В HTML

<meta http-equiv="refresh" content="0; url=http://www.site.ru/index.html">

   
 
 автор: retsoul   (02.12.2007 в 01:56)   письмо автору
 
   для: DiMoN_TD   (02.12.2007 в 01:39)
 

гм, если вы авторизацию делали не на ajax-е, то функцию header() - вполне можете использовать, только для этого разграничте условием IF разделы с формой регистрации и основным содержимым

   
 
 автор: DiMoN_TD   (02.12.2007 в 03:32)   письмо автору
 
   для: retsoul   (02.12.2007 в 01:56)
 

неа, не получается там использовать header()...
да и смотрю JavaScript тоже не помогает... =(
Вот как мне просто ВСЮ СТРАНИЦУ ОБНОВИТЬ ОДИН РАЗ ПОСЛЕ ВВОДА ВЕРНОГО ЛОГИНА И ПАРОЛЯ!!!

   
 
 автор: RV   (02.12.2007 в 03:53)   письмо автору
 
   для: DiMoN_TD   (02.12.2007 в 03:32)
 

поместите в хтмл код то, что сказал Faraon

   
 
 автор: DiMoN_TD   (02.12.2007 в 04:39)   письмо автору
 
   для: 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>&nbsp;</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"$hashtime()+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='&#1042;&#1093;&#1086;&#1076; '><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 в 13:52)   письмо автору
 
   для: DiMoN_TD   (02.12.2007 в 04:39)
 

Так что, кто-то может мне помочь??

   
 
 автор: sim5   (02.12.2007 в 14:33)   письмо автору
 
   для: Dimon_td   (02.12.2007 в 13:52)
 

А чем? Зачем вообще нужен JS для этого. Вы не далаете проверки кто к вам зашел - авторизованный пользователь или нет, куда при этом делать перенаправление, для меня вопрос. Если правильно все выстроить, то достаточно будет header().

   
 
 автор: DiMoN_TD   (02.12.2007 в 14:38)   письмо автору
 
   для: sim5   (02.12.2007 в 14:33)
 

что значит не делаю проверки??
Делаю, и за это отвечает check.php

   
 
 автор: sim5   (02.12.2007 в 14:41)   письмо автору
 
   для: DiMoN_TD   (02.12.2007 в 14:38)
 

А ваш сайт, что начинается с check.php?

   
 
 автор: DiMoN_TD   (02.12.2007 в 15:56)   письмо автору
 
   для: sim5   (02.12.2007 в 14:41)
 

нет, он начинается с index.php, а к нему подключается уже и log.php (создаёт кукисы и обновляет БД), и check.php (тут идёт проверка кукисов). Собственно я так вижу структуру авторизации... если у вас есть альтернатива, то подскажите пожалуйста как мне перестроить свой сайт под другую структуру!

   
 
 автор: sim5   (02.12.2007 в 16:10)   письмо автору
 
   для: DiMoN_TD   (02.12.2007 в 15:56)
 

Ну вот и сделайте проверку в index.php - авторизованный ли пользователь ее открыл или нет. Тогда хидер с того места, где у вас проверяется удачна или нет авторизация, на индексный файл, даст желаемый результат.

   
 
 автор: DiMoN_TD   (02.12.2007 в 16:54)   письмо автору
 
   для: 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 т.к. условие ведь не выполняется!!!
Что ж он выдаёт такую ошибку, я не пойму! =\

   
 
 автор: sim5   (02.12.2007 в 17:16)   письмо автору
 
   для: 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!";
//есть над чем подумать
?>

   
 
 автор: wawilon   (03.12.2007 в 10:52)   письмо автору
 
   для: DiMoN_TD   (02.12.2007 в 16:54)
 

Вероятно ошибка возникает из-за того что Вы пытаетесь инициализировать куки переменные после того как на экран выдалась фраза "Вы ввели неправильный логин/пароль".
Функцией setcookie можно пользоваться до того как что то выведено на экран иначе заголовок будет уже сформирован и в куки вы ничего записать не сможете.

   
 
 автор: DiMoN_TD   (03.12.2007 в 13:18)   письмо автору
 
   для: wawilon   (03.12.2007 в 10:52)
 

кукисы формируются, а то сообщение выводится как раз, если пароль неверный, соотвественно и кукисы формироваться не будут!

и вообще, что самое интересное, что даже если я указываю в блоке header.php форме action="main.php" (где опять же идёт обработка логина, пароля и кукисов), то при нажатии на клавишу Вход, меня всё равно оставляет на странице index.php!!! ПОЧЕМУ??? Или это из-за кэша страницы??
Проверял в IE 6, там такая же ситуация!! Уже заколебало если быть честным! =(

   
 
 автор: gipper   (06.12.2007 в 06:35)   письмо автору
 
   для: 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();

   
 
 автор: bronenos   (03.12.2007 в 18:08)   письмо автору
 
   для: emi   (03.12.2007 в 16:10)
 

window.location.reload();

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования