Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 14

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

10.10.2017, 14:50. Показов 1268. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru