0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 14

Активация почты: не работает проверка ссылки и не работает сессия

10.10.2017, 14:50. Показов 1308. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Пишу сайт по разным урокам из интернета. При активации почты, сама активация срабатывает (в базе данных обновляется activation), но не проверяет на ошибку (специально убираю часть ключа из ссылки - ошибку не выдает ). И пробую сразу открыть сессию пользователю, но не работает. И при переходе на другие страницы сайта - сессия не работает. Только надо сделать вход на сайт. Помогите, пожалуйста. Уже около недели мучаюсь (... Возможно, что у меня логическая ошибка в if и else?
registration.php:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
                            <h1>Регистрация</h1>
                    <form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
                    <fieldset>
                        <label for="first_name">Имя:</label><br/>
                        <input type="text" name="first_name" size="30"><br/>
                        <label for="last_name">Фамилия:</label><br/>
                        <input type="text" name="last_name" size="30"><br/>
                        <label for="country">Страна:</label><br/>
                        <input type="text" name="country" size="30"><br/>
                        <label for="sity">Город:</label><br/>
                        <input type="text" name="sity" size="30"><br/>
                        <label for="email">Email:</label><br/>
                        <input type="email" name="email" size="30"><br/>
                        <label for="password">Пароль:</label><br/>
                        <input name="password" type="password" value="" size="30"><br/>
                        <label for="login">Логин:</label><br/>
                        <input type="text" name="login" size="30"><br/>
                    </fieldset>
                    <br/>
                    <fieldset>
                        <button type="submit" name="submit">Отправить письмо</button><br/>
                    </fieldset>
                </form>     
                <?php
                require 'connectdb.php';
                $login = $_GET['$login'];
                $password = $_GET['$password'];
                //$query = mysql_query("SELECT 'activation' FROM 'activation' WHERE 'login' = '$login'");   
                //$row = mysql_fetch_assoc($query))
                //{
                //  $db_password = $row['confirm-password'];
                //}
                if($password == $db_password)
                {
                    mysql_query("UPDATE 'activation' SET `confirmed`='1'");
                    //mysql_query("UPDATE 'activation' SET `confirm=password`='0'");
                }
                else
                {
                    echo "username and code don't math";
                }
                //$activation = getActivatelink($login);
                if(isset($_POST['submit']))
                {
                
                    $first_name = $_REQUEST['first_name'];
                    $last_name = $_REQUEST['last_name'];
                    $country = $_REQUEST['country'];
                    $sity = $_REQUEST['sity'];
                    $email = $_REQUEST['email'];
                    $password = $_REQUEST['password'];
                    $login = $_REQUEST['login'];
                    $secret = "Celal";
                    $activation = md5($secret.$login);
            
                    $result = mysql_query("SELECT * FROM `users` WHERE login = '$login' or sity = '$sity' or first_name = '$first_name' or last_name = '$last_name' or email = '$email' or country = '$country' or password = '$password'");             
                     if(mysql_num_rows($result) ) 
                    { 
                    echo '<script type="text/javascript">alert("Что-то пошло не так... Возможно, Вы не заполнили все поля, либо такой логин уже существует.");</script>';
                    //print "Такой логин уже существует";
                    }   
                    else
                    {
                    mysql_query("INSERT INTO users SET first_name='".$first_name."',last_name='".$last_name."', country='".$country."', sity='".$sity."', login='".$login."', password='".$password."', email='".$email."', activation='".$activation."'");
                    mysql_query("SET NAMES 'utf8'");
                    mysql_query("SET CHARSET SET 'utf8'");
                    mysql_query($insert_sql);
                    mail("$email", "registration on cite", "http://magicbox.com/activ.php?login=$login&key=$activation");
                    echo '<script type="text/javascript">alert("Вы зарегистрированы. Проверьте почту");</script>'; //print "Вы зарегистрированы";
                    }               
                }

activ.php:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php               
            require 'connectdb.php';           
                        $login=$_GET['login'];
                $key=$_GET['key'];
                $PRIVET_ACTIV ='Поздравляем, ваша почта активирована '.$_SESSION['login'];
                $result_set = mysql_query("SELECT activation FROM users WHERE login = '$login'") or die(mysql_error);   
                $row = mysql_fetch_assoc($result_set);              
                if($key=$row)
                {  
                     mysql_query("UPDATE    users SET activation='1' WHERE login='$login'");//если равны, то активируем 
                                                                                                                                                                         пользователя                    
                     echo "<h7>$PRIVET_ACTIV</h7>";                  
                }
                else
                {
                echo "Ошибка! Ваш Е-мейл не    подтвержден!";
                //если    же полученный из url и    сгенерированный код не равны, то выдаем ошибку
                }               
        ?>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.10.2017, 14:50
Ответы с готовыми решениями:

Регистрация на русском языке - не работает активация почты. Не получается кодировкой
Здравствуйте. При регистрации пользователя на русском языке - активация почты (выслать письмо на почту с ссылкой) не срабатывает. На...

Не работает сессия
&lt;? include (&quot;include/db.php&quot;); $out='&lt;form method=&quot;POST&quot;&gt; &lt;input type=submit name=&quot;enter&quot; value=&quot;Выйти&quot;&gt;'; $form='&lt;form...

Сессия не работает
Собственно читаю PHPFAQ по сессиям, есть там такой пример: &lt;?php session_start(); if (!isset($_SESSION)) { $_SESSION = 0;...

10
 Аватар для arava
340 / 135 / 70
Регистрация: 30.06.2014
Сообщений: 717
10.10.2017, 15:35
Marinachaynik, activ.php:

PHP
1
if($key=$row)
, Вы здесь присваиваете $key = $row .... видимо забыли еще один "="

PHP
1
if($key == $row)
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 14
10.10.2017, 15:42  [ТС]
Спасибо за ответ. Я понимаю, что там должно быть ==. Но тогда не работает обновление в базе данных activation.
0
 Аватар для arava
340 / 135 / 70
Регистрация: 30.06.2014
Сообщений: 717
10.10.2017, 15:44
Marinachaynik, что в переменной
PHP
1
$key=$_GET['key'];
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 14
10.10.2017, 15:47  [ТС]
HTML5
1
$key=$_GET['key'];
это ключ из ссылки, по которой проходит пользователь. Этот ключ я сравниваю с activation который я получаю из таблицы базы данных (activation).
0
 Аватар для arava
340 / 135 / 70
Регистрация: 30.06.2014
Сообщений: 717
10.10.2017, 15:49
Лучший ответ Сообщение было отмечено Marinachaynik как решение

Решение

Marinachaynik, значит
PHP
1
if($key == $row)
не равны... а ввиду того что массив ассоциативный
попробуйте так :
PHP
1
if($key == $row['activation'])
1
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 14
10.10.2017, 15:55  [ТС]
ключ из письма (registration.php)
HTML5
1
mail("$email", "registration on cite", "http://magicbox.com/activ.php?login=$login&key=$activation");
Добавлено через 4 минуты
PHP
1
if($key == $row['activation'])
YYYEEEEESSSSSS!!!!! Спасибо Вам ОГРОМНОЕЕЕЕЕ!!!! Неделю думала..... А так, чтобы сессия сразу на странице с активацией открывалась, не подскажите? Чтобы потом при переходе на другие страницы сайта, уже работала сессия??
Ой, спасибищееее Вам!!!
0
 Аватар для arava
340 / 135 / 70
Регистрация: 30.06.2014
Сообщений: 717
10.10.2017, 16:03
Marinachaynik,
Цитата Сообщение от Marinachaynik Посмотреть сообщение
А так, чтобы сессия сразу на странице с активацией открывалась
нужно на каждой странице в начале сценария добавить
PHP
1
session_start();
внести имя пользователя в сессию:
PHP
1
$_SESSION['login'] = $login;
и тогда на каждой странице где сессия уже открыта через
PHP
1
session_start();
можно выводить
PHP
1
echo $_SESSION['login']; // будет имя юзера
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 14
10.10.2017, 16:21  [ТС]
Сессию я на каждой странице сайта в самом начале открывала. Я просто хотела, чтобы когда пользователь проходил по ссылке активации - на странице активации ему сразу открывалась сессия. Приблизительно так (выделила в коде комментарий красным цветом):
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php               
            require 'connectdb.php';           
                        $login=$_GET['login'];
                $key=$_GET['key'];
                $PRIVET_ACTIV ='Поздравляем, ваша почта активирована '.$_SESSION['login'];
                $result_set = mysql_query("SELECT activation FROM users WHERE login = '$login'") or die(mysql_error);   
                $row = mysql_fetch_assoc($result_set);              
                if($key=$row)
                {  
                     mysql_query("UPDATE    users SET activation='1' WHERE login='$login'");//если равны, то активируем 
                                                                                                                                                                         пользователя                    
                     echo "<h7>$PRIVET_ACTIV</h7>";     [COLOR="Red"]//И ЗДЕСЬ УЖЕ У НЕГО ОТКРЫТА СЕССИЯ (ИЗ ПЕРЕМЕННОЙ $PRIVET_ACTIV )[/COLOR]
                     
             
                }
                else
                {
                echo "Ошибка! Ваш Е-мейл не    подтвержден!";
                //если    же полученный из url и    сгенерированный код не равны, то выдаем ошибку
                }               
        ?>
0
 Аватар для arava
340 / 135 / 70
Регистрация: 30.06.2014
Сообщений: 717
10.10.2017, 16:27
Лучший ответ Сообщение было отмечено Marinachaynik как решение

Решение

Marinachaynik,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php       
         session_start();        
            require 'connectdb.php';           
                $login=$_GET['login'];
                $_SESSION['login'] = $login; // здесь мы присвоим логин переменной сессии
                $key=$_GET['key'];
                $PRIVET_ACTIV ='Поздравляем, ваша почта активирована '.$_SESSION['login']; 
                $result_set = mysql_query("SELECT activation FROM users WHERE login = '$login'") or die(mysql_error);   
                $row = mysql_fetch_assoc($result_set);              
                if($key == $row['activation'])
                {  
                     mysql_query("UPDATE    users SET activation='1' WHERE login='$login'");//если равны, то активируем 
                                                                                                                                                                         пользователя                    
                     echo "<h7>$PRIVET_ACTIV</h7>";     [COLOR="Red"]//И ЗДЕСЬ УЖЕ У НЕГО ОТКРЫТА СЕССИЯ (ИЗ ПЕРЕМЕННОЙ $PRIVET_ACTIV )[/COLOR]
                     
             
                }
                else
                {
                echo "Ошибка! Ваш Е-мейл не    подтвержден!";
                //если    же полученный из url и    сгенерированный код не равны, то выдаем ошибку
                }               
        ?>
1
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 14
10.10.2017, 16:34  [ТС]
Мдяяя.... Учиться и еще раз учиться... Пошла читать учебники. Спасибо Вам огромное!!! Вы мне очень помогли!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.10.2017, 16:34
Помогаю со студенческими работами здесь

Не работает сессия
Делаю систему авторизации на сайте - вот код: login.php &lt;?php session_start(); if(isset($_POST)){ $login =...

не работает сессия
даже не знал как назвать тему....хех потомучто сесси то работают - не работает то что я написал....а именно: есть фукции для авторизации...

Не работает сессия
Добрый день. Есть два одинаковых файла index.php код внутри &lt;?php session_start(); $_SESSION = &quot;раз два три&quot;; ...

Не работает сессия
Запускаю index.php, вываливает ошибку....не понимаю,почему...может дело в подключаемом скрипте?...Подскажите пожалуйста... index.php ...

Не работает сессия
Вот мой код &lt;?php session_start(); echo '&lt;form method=&quot;POST&quot; action=&quot;&quot;&gt; &lt;input name=&quot;USERNAME&quot; type=&quot;text&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru