Работа с куками и переадресация страницы

niko42

Новичок
Здравствуйте.
Форма
PHP:
<?php
                        if($_COOKIE['test'] == 1){ // проверяем существуют ли куки
                                 setcookie("test","1",time()+1);
                            echo 'Вы зарегены';
                            
                        }
                        else{
                            echo <<<EOT
                        <form id="formID" class="formular" method="post" action="modul/reg2.php">
                            <table>
                                <tr>
                                    <td>login: </td>
                                    <td><input class="validate[required,custom[noSpecialCaracters],length[4,16],custom[onlyLetter]]" type="text" name="account" maxlength="16"></td>
                                </tr>
                                <tr>
                                    <td>password: </td>
                                    <td><input class="validate[required,length[6,16],custom[noSpecialCaracters],custom[onlyLetter]] text-input" type="password" name="password" id="password" maxlength="16"></td>
                                </tr>
                                <tr>
                                    <td>repeat password: </td>
                                    <td><input class="validate[required,confirm[password]] text-input" type="password" name="password2" maxlength="16"></td>
                                </tr>
                                <tr>
                                    <td>E-mail: </td>
                                    <td><input class="validate[required,custom[email]] text-input" type="text" name="email" maxlength="50"></td>
                                </tr>
                                <tr>
                                    <td>
                                        <p>
                                            <a href="#reg_form" onClick="document.getElementById('image').src='modul/captcha.php?sid='+Math.round(1000 * Math.random());">reload</a>
                                        </p>
                                        code:
                                    </td>
                                    <td>
                                        <img src="modul/captcha.php?sid=<?php echo rand(10000, 99999); ?>" width="120" height="25" alt="" id='image'/>
                                        <p><input class="validate[required]" type='text' name='captcha'></p>
                                    </td>
                                </tr>
                                <tr>
                                    <td colspan="2" style="text-align: center;">
                                        <input type=image src="images/reg_button.png" name="submit" value="Зарегестрироваться"/>
                                    </td>
                                </tr>
                            </table>
                        </form>
EOT;
                        }
                        ?>
Обработчик
PHP:
if ($page="index.php" && $_POST['account'] && strlen($_POST['account'])<=16
    && $_POST['password'] && $_POST['password2'] && $_POST['password']==$_POST['password2']
    && $_POST['email'] && strlen($_POST['email'])<=30 && $_POST['captcha']){
    if(count($_POST)>0){
        if ( isset($_POST['captcha']) )
        {
            $code = $_POST['captcha']; //--Получаем введенную пользователем капчу

            session_start();
            //--Сравниваем
            if ( isset($_SESSION['captcha']) && strtoupper($_SESSION['captcha']) == strtoupper($code) ){

                $Login = mysql_connect("$host:$port", "$user", "$pass", True);
                mysql_selectdb("$db2", $Login);
                mysql_query("INSERT INTO accounts (login, password, lastactive, access_level, lastIP, email, points) VALUES ('".$_POST['account']."', '". pass_encode($_POST['password']) ."', NULL, 0, NULL, '".$_POST['email']."', 0)", $Login);

                switch (mysql_errno())
                {
                    case 0:
                        setcookie("test","1",time()+3600); //создаем куки
                        header("refresh:1;url=http://test1.ru/#reg_form" );
                    break;
                    case 1062: print '<p>К сожалению, такой аккаунт уже существует.</p>';
                    break;
                    default: print 'Error '.mysql_errno().': '.mysql_error();
                    break;
                }
            }
            else{
                echo 'Err!';
            }


            //--Удаляем из сессии код капчи
            unset($_SESSION['captcha']);
        }
    }
}
Ситуация такова, к сожалению, не проверяет if($_COOKIE['test'] == 1) и не выдает нужную форму.

P.S. протестирова простенький код
2.php
PHP:
<?php
setcookie("test","Hello",time()+3600);
header("Refresh:5, url=http://test2.ru/index.php");
?>
index.php
PHP:
echo $_COOKIE['test'];
В этом варианте отлично работает.=((
 

Фанат

oncle terrible
Команда форума
Ничего не понял.
Будь добр для неработающей ситуации привести такой же "простенький код"
 

niko42

Новичок
Не работающая ситуация:
файл регистрации
PHP:
$Login = mysql_connect("$host:$port", "$user", "$pass", True);
                mysql_selectdb("$db2", $Login);
                mysql_query("INSERT INTO accounts (login, password, lastactive, access_level, lastIP, email, points) VALUES ('".$_POST['account']."', '". pass_encode($_POST['password']) ."', NULL, 0, NULL, '".$_POST['email']."', 0)", $Login);
switch (mysql_errno())
                {
                    case 0: // если все отлично, то регистрация прошла успешно
                        setcookie("test","1",time()+3600); //создаем куки
                        header("refresh:1; url=http://test1.ru/#reg_form" ); // переадресовывем на другой файл
                        exit;
                    break;
                    case 1062: print '<p>К сожалению, такой аккаунт уже существует.</p>';
                    break;
                    default: print 'Error '.mysql_errno().': '.mysql_error();
                    break;
                }
ФАйл index.php
PHP:
if($_COOKIE['test'] == 1){ // проверяем существуют ли куки

                            echo 'Вы зарегены';
                            setcookie("test","1",time()+1);
}else{
echo "ВЫ не зарегены";
}
Не работает проверка куков
 

Фанат

oncle terrible
Команда форума
при чем здесь SQL?
Ты можешь привести такой же пример?
 

niko42

Новичок
PHP:
index.php
<?php
if($_COOKIE['test'] == 1){ // проверяем существуют ли куки
    setcookie("test","1",time()+1);
    echo 'Вы зарегены ';

}
else{
    echo "ВЫ не зарегены ";
}
PHP:
1.php
<?php
setcookie("test","1",time()+3600); //создаем куки
header("refresh:1; url=http://test2.ru"); // переадресовывем на другой файл
?>
?>
Такая конструкция работает.
 

niko42

Новичок
Конструкция в первом сообщение не работает. Не могу понять почему.
 

niko42

Новичок
Я так понимаю куки записываются на уровне пакета, т.е.

папка modul
reg.php
вне пакета index.php

Как записать куки для пакета, где находится index.php, а не для пакета modul

Кука у меня хранится вот так: modul test:1
А нужно: test:1
Но при этом записываю куки из под modul
 

Фанат

oncle terrible
Команда форума
какого ещё пакета? ты так каталог называешь что ли?
читай документацию на эту функцию
 

iKengoSoft

Новичок
куки записываются на уровне домена. сделай авторизацию на сессиях
 

Фанат

oncle terrible
Команда форума
если голова болит, надо выпить таблетку, крепкого горячего сладкого чаю, и поспать.
зачем тебе функция session_set_cookie_params?
почему бы не почитать документацию не на случайно выуженную из интернета, а ту, с которой у тебя проблемы?
 

niko42

Новичок
setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain]]]] - все понятно.
string $path и string $domain - не помогает=(
 

Фанат

oncle terrible
Команда форума
$domain тебе не нужен, а вот $path - это то, что может решить проблему с "пакетами".
если тебе не помогает - могу только посочувствовать
 

niko42

Новичок
Ай в топку короч, через через class сделаю все. Заморачиваться еще буду....

Спасибо Вам за консультацию.
 

iKengoSoft

Новичок
ОМГ.
Кто-нибудь объяснит мне, как две части этой фразы связаны между собой, и обе - с исходным вопросом?
хотел сказать, что логика скрипта у него дырявая. поставив вручную куку test = 1 я авторизуюсь на сайте и украду все деньги
 
Сверху