Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2011, 16:02   #1
soonner
Пользователь
 
Аватар для soonner
 
Регистрация: 14.03.2009
Сообщений: 97
Сообщение Отображение блока после входа.

Здравствуйте у меня возникла сл. проблема и пока у меня нет идей как с ней бороться. У меня есть форма входа на сайт, вот она
PHP код:
<?php
    
if(!$_SESSION['name']) {
    if(!
$_POST['login']) {
?><div class="loginblock">
    <div id="loginbl"></div>
    <div id="loginbr"></div>
    <div id="loginbc">
        <table>

            <form method="post"><tr><td><input name="mailito" id="inp" type="text"></td><td><input name="pass" id="inp" type="text"></td>
            <td><input name="login" onclick="javascript:document.location.reload();"  id="inpb" type="submit" value="Войти"></td></form>
            <td><input onmouseover="this.style.color='#fff'" onmouseout="this.style.color='#1e4088'" class='activate_modal' name='modal_window2' id="regbutton" type="submit" value="Регистрация"></td>
            </tr>
        </table>
    </div>
</div>
<?php }
    if(
$_POST['login']){
    
$mail $_POST['mailito'];
    
$upass $_POST['pass'];
    if(
$mail !='' AND $upass !='') {
            
//Создаем запрос
            
$q=mysql_query("SELECT * FROM user WHERE email='".$mail."' AND pass='".md5($upass)."'");
            
//Проверяем существует ли хоть одна запись
            
if(mysql_num_rows($q)===1) {
            
$r=mysql_fetch_array($q);
            
$_SESSION['name'] = $r['name'];
                } else echo 
"its didn't work" ;
        }}}
        else {
        
?>
<div class="loginblock">
    <div id="loginbl"></div>
    <div id="loginbr"></div>
    <div id="loginbc">
    <?php
        
        $q
=mysql_query("SELECT * FROM user WHERE name='".$_SESSION['name']."'");
            
//Проверяем существует ли хоть одна запись
            
$r=mysql_fetch_array($q);
        
    
?>
    <table>
        <tr id="persinfo">
            <td>Вы</td>
            <td><?php echo $r['name'] ; ?></td>
        </tr>
    </table>
<form method="post">
    <input type="submit" value="exit" name="exit">
</form>
    </div>
</div>
        
        <?php
        
}
        
         if(
$_POST['exit']) {

  
session_destroy();
  unset(
$_POST['exit']); 
  
mysql_close($link);   

 }
?>
Все как бы работает, то есть, сам пхп и вход работает, но возникает сл. проблема, после нажатия на кнопку "Войти", происходит вход, сессии присваивается имя и в этом моменте возникает трабл
PHP код:
    if(!$_SESSION['name']) {
/*`````````````````*/
        
else { 
/*``````````````````*/

все что находиться после else отказывается работать пока страница не будет обновлена. Как с этим бороться ? Как это исправить?
soonner вне форума Ответить с цитированием
Старый 13.03.2011, 17:01   #2
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

start_session?
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 14.03.2011, 12:27   #3
soonner
Пользователь
 
Аватар для soonner
 
Регистрация: 14.03.2009
Сообщений: 97
По умолчанию

start_session() написан в самом начала документа, еще до доктайпа.
soonner вне форума Ответить с цитированием
Старый 14.03.2011, 15:07   #4
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

PHP код:
    if(!$_SESSION['name']) {
/*`````````````````*/
        
else { 
/*``````````````````*/

А скобки фигурные правильно стоят?
В том, что здесь написано одной не хватает
PHP код:
    if(!$_SESSION['name']) {
/*`````````````````*/
        
}else { 
/*``````````````````*/

Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 14.03.2011, 15:49   #5
dekameron
Форумчанин
 
Аватар для dekameron
 
Регистрация: 27.04.2010
Сообщений: 185
По умолчанию

Цитата:
Сообщение от soonner Посмотреть сообщение
start_session() написан в самом начала документа, еще до доктайпа.
А надо писать session_start ()

Или если мсье знает толк в извращениях, то

Код:
function start_session(){
    session_start();
    return;
}
Помог - тырк на весы
dekameron вне форума Ответить с цитированием
Старый 14.03.2011, 16:09   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от soonner Посмотреть сообщение
Все как бы работает, то есть, сам пхп и вход работает, но возникает сл. проблема, после нажатия на кнопку "Войти", происходит вход, сессии присваивается имя и в этом моменте возникает трабл
PHP код:
    if(!$_SESSION['name']) {
/*`````````````````*/
        
else { 
/*``````````````````*/

все что находиться после else отказывается работать пока страница не будет обновлена. Как с этим бороться ? Как это исправить?
А вы вообще понимаете, что код выполняется последовательно, сверху вниз..?

Это я к тому говорю, что в вашем коде проверка наличия $_SESSION['name'] выполняется раньше, чем сама переменная инициализируется вообще...

Поэтому вторая часть условия работает только после обновления страницы - т.к. $_SESSION['name'] получает значение внутри первой части условия:
PHP код:
if(!$_SESSION['name']){
    
// обрабатываем POST - и присваиваем
    // значение $_SESSION['name']
}else{
    
// сработает только после обновления
    // т.к. $_SESSION['name'] получает значение 
    // уже после проверки условия в IF

Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение знаками после выборки из базы Kapitann PHP 10 31.10.2010 16:58
Автоматическое подключение после входа в систему (телефон-компьютер, Linux) Alex Cones Операционные системы общие вопросы 1 22.09.2009 22:20
Виснет вся система после входа в Интернет DeKot Компьютерное железо 12 29.04.2009 00:06
Сессии + форма входа spein PHP 13 27.03.2009 18:18
форма входа на Flash vanDJ Софт 4 08.08.2008 10:01