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

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте. Пишу сайт по разным урокам из интернета. При активации почты, сама активация срабатывает (в базе данных обновляется 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2017, 14:50
Ответы с готовыми решениями:

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

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

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

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

10
340 / 135 / 70
Регистрация: 30.06.2014
Сообщений: 717
10.10.2017, 15:35 2
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  [ТС] 3
Спасибо за ответ. Я понимаю, что там должно быть ==. Но тогда не работает обновление в базе данных activation.
0
340 / 135 / 70
Регистрация: 30.06.2014
Сообщений: 717
10.10.2017, 15:44 4
Marinachaynik, что в переменной
PHP
1
$key=$_GET['key'];
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 14
10.10.2017, 15:47  [ТС] 5
HTML5
1
$key=$_GET['key'];
это ключ из ссылки, по которой проходит пользователь. Этот ключ я сравниваю с activation который я получаю из таблицы базы данных (activation).
0
340 / 135 / 70
Регистрация: 30.06.2014
Сообщений: 717
10.10.2017, 15:49 6
Лучший ответ Сообщение было отмечено 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  [ТС] 7
ключ из письма (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
340 / 135 / 70
Регистрация: 30.06.2014
Сообщений: 717
10.10.2017, 16:03 8
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  [ТС] 9
Сессию я на каждой странице сайта в самом начале открывала. Я просто хотела, чтобы когда пользователь проходил по ссылке активации - на странице активации ему сразу открывалась сессия. Приблизительно так (выделила в коде комментарий красным цветом):
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
340 / 135 / 70
Регистрация: 30.06.2014
Сообщений: 717
10.10.2017, 16:27 10
Лучший ответ Сообщение было отмечено 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  [ТС] 11
Мдяяя.... Учиться и еще раз учиться... Пошла читать учебники. Спасибо Вам огромное!!! Вы мне очень помогли!!!
0
10.10.2017, 16:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2017, 16:34
Помогаю со студенческими работами здесь

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

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

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

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

Не работает сессия
Привет всем. В моем локальном сервере сессия работает а на хосте нет в чем проблема кто нибуд...

Сессия не везде работает
Есть два файла index.php session_start(); $_SESSION=10; и users.php session_start(); echo...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru