За последние 24 часа нас посетили 18352 программиста и 1613 роботов. Сейчас ищут 1368 программистов ...

Сессия

Тема в разделе "PHP для новичков", создана пользователем Dasha97, 24 июл 2017.

Метки:
  1. Dasha97

    Dasha97 Новичок

    С нами с:
    17 окт 2016
    Сообщения:
    12
    Симпатии:
    0
    Здравствуйте.

    Помогите, пожалуйста.

    Вот авторизация на сайте
    PHP:
    PHP:
    1. if(isset($_POST['submit'])){
    2.  
    3.    $username = $_POST['username'];
    4.    $password = $_POST['password'];
    5.  
    6.    if($user->login($username,$password)){
    7.        $_SESSION['username'] = $username;
    8.        header('Location: memberpage.php');
    9.        exit;
    10.  
    11.    } else {
    12.        $error[] = 'Неверный логин или пароль.';
    13.    }
    14. }
    но при регистрации пользователь указывает еще и имя на русском
    как можно вывести Имя?
    PHP:
    PHP:
    1. <?php echo ($_SESSION['name'])?>
    так у меня не вышло((
     
    #1 Dasha97, 24 июл 2017
    Последнее редактирование модератором: 24 июл 2017
  2. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    1. <?php echo ($_POST['name'])?>
     
  3. Dasha97

    Dasha97 Новичок

    С нами с:
    17 окт 2016
    Сообщения:
    12
    Симпатии:
    0
    Не вышло:(
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @Dasha97, как я понял, эта инфа хранится где то, так, сначала надо это имя получить из базы. а потом вывести.
    --- Добавлено ---
    А если в качестве места хранения используются сессии то надо туда сохранить. Я не вижу, чтобы вы его туда сохранили.
     
  5. Dasha97

    Dasha97 Новичок

    С нами с:
    17 окт 2016
    Сообщения:
    12
    Симпатии:
    0
    PHP:
    1. <?php
    2. //подключаем конфигурацию
    3. require_once('includes/config.php');
    4. //если пользователь уже вошел то перенапровление на главную
    5. if( $user->is_logged_in() ){ header('Location: index.php'); }
    6.  
    7. //обрабатываем форму
    8. if(isset($_POST['submit'])){
    9.  
    10.     $username = $_POST['username'];
    11.     $password = $_POST['password'];
    12.    
    13.     if($user->login($username,$password)){
    14.         $_SESSION['username'] = $username;
    15.         header('Location: memberpage.php');
    16.         exit;
    17.    
    18.     } else {
    19.         $error[] = 'Неверный логин или пароль.';
    20.     }
    21. }//конец входа
    Вот как вход происходит
     
  6. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    код формы дай
     
  7. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Наверное что-то типо этого:
    PHP:
    1.  echo $user->firstname;
     
  8. Dasha97

    Dasha97 Новичок

    С нами с:
    17 окт 2016
    Сообщения:
    12
    Симпатии:
    0
    Вход

    PHP:
    1.             <form role="form" method="post" action="" autocomplete="off">
    2.                 <h2>Вход</h2>
    3.                 <p><a href='register.php'>Еще не зарегистрированы?</a></p>
    4.                 <hr>
    5.  
    6.                 <?php
    7.                 //проверка на ошибки
    8.                 if(isset($error)){
    9.                     foreach($error as $error){
    10.                         echo '<p class="bg-danger">'.$error.'</p>';
    11.                     }
    12.                 }
    13.  
    14.                 if(isset($_GET['action'])){
    15.  
    16.                     //проверка на активацию
    17.                     switch ($_GET['action']) {
    18.                         case 'active':
    19.                             echo "<h2 class='bg-success'>Ваша учетная запись теперь активна, Вы можете теперь войти в систему.</h2>";
    20.                             break;
    21.                         case 'reset':
    22.                             echo "<h2 class='bg-success'>Проверьте свой Email.</h2>";
    23.                             break;
    24.                         case 'resetAccount':
    25.                             echo "<h2 class='bg-success'>Пароль изменился, Вы можете теперь войти в систему.</h2>";
    26.                             break;
    27.                     }
    28.  
    29.                 }
    30.  
    31.                
    32.                 ?>
    33.  
    34.                 <div class="form-group">
    35.                     <input type="text" name="username" id="username" class="form-control input-lg" placeholder="Логин" value="<?php if(isset($error)){ echo $_POST['username']; } ?>" tabindex="1">
    36.                 </div>
    37.  
    38.                 <div class="form-group">
    39.                     <input type="password" name="password" id="password" class="form-control input-lg" placeholder="Пароль" tabindex="3">
    40.                 </div>
    41.                
    42.                 <div class="row">
    43.                     <div class="col-xs-9 col-sm-9 col-md-9">
    44.                          <a href='reset.php'>Забыли пароль?</a>
    45.                     </div>
    46.                 </div>
    47.                
    48.                 <hr>
    49.                 <div class="row">
    50.                     <div class="col-xs-6 col-md-6"><input type="submit" name="submit" value="Вход" class="btn btn-primary btn-block btn-lg" tabindex="5"></div>
    51.                 </div>
    52.             </form>
     
  9. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Как я уже говорил, эти данные у вас в базе, они туда попадают во время регистрации. А форма, которую вы выложили - форма авторизации.
    Чтобы вывести Имя пользователя, нужно его сначала получить из базы и потом вывести.
     
  10. Dasha97

    Dasha97 Новичок

    С нами с:
    17 окт 2016
    Сообщения:
    12
    Симпатии:
    0
    Форма регистрации
    Код (Text):
    1. //если входил в систему перенаправление членской страницы
    2. if( $user->is_logged_in() ){ header('Location: memberpage.php'); }
    3.  
    4. //если форма была представлена, обрабатывают его
    5. if(isset($_POST['submit'])){
    6.    
    7.     //очень простая проверка допустимости
    8.     if(strlen($_POST['username']) < 3){
    9.         $error[] = 'Имя пользователя слишком коротко.';
    10.     } else {
    11.         $stmt = $db->prepare('SELECT username FROM members WHERE username = :username');
    12.         $stmt->execute(array(':username' => $_POST['username']));
    13.         $row = $stmt->fetch(PDO::FETCH_ASSOC);
    14.  
    15.         if(!empty($row['username'])){
    16.             $error[] = 'Введенное имя пользователя уже используется.';
    17.         }
    18.  
    19.     }
    20.  
    21.     //проверка имени
    22.     if(strlen($_POST['name']) < 1){
    23.         $error[] = 'Имя слишком коротко.';
    24.     } else {
    25.         $stmt = $db->prepare('SELECT name FROM members WHERE name = :name');
    26.         $stmt->execute(array(':name' => $_POST['name']));
    27.         $row = $stmt->fetch(PDO::FETCH_ASSOC);
    28.  
    29.     }
    30.    
    31.      //проверка телефона
    32.     if(strlen($_POST['phone']) < 3){
    33.         $error[] = 'Телешон слишком короткий.';
    34.     } else {
    35.         $stmt = $db->prepare('SELECT phone FROM members WHERE phone = :phone');
    36.         $stmt->execute(array(':phone' => $_POST['phone']));
    37.         $row = $stmt->fetch(PDO::FETCH_ASSOC);
    38.  
    39.         if(!empty($row['phone'])){
    40.             $error[] = 'Телефон уже используется.';
    41.         }
    42.  
    43.     }  
    44.    
    45.    
    46.    
    47.    
    48.    
    49.    
    50.     if(strlen($_POST['password']) < 3){
    51.         $error[] = 'Пароль слишком короткий.';
    52.     }
    53.  
    54.     if(strlen($_POST['passwordConfirm']) < 3){
    55.         $error[] = 'Пароль слишком короткий.';
    56.     }
    57.  
    58.     if($_POST['password'] != $_POST['passwordConfirm']){
    59.         $error[] = 'Пароли не совподают.';
    60.     }
    61.    
    62.     //почтовая проверка допустимости
    63.     if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
    64.         $error[] = 'Введите допустимый адрес электронной почты';
    65.     } else {
    66.         $stmt = $db->prepare('SELECT email FROM members WHERE email = :email');
    67.         $stmt->execute(array(':email' => $_POST['email']));
    68.         $row = $stmt->fetch(PDO::FETCH_ASSOC);
    69.  
    70.         if(!empty($row['email'])){
    71.             $error[] = 'Электронная почта уже используется.';
    72.         }
    73.  
    74.     }
    75.  
    76.      //если никакие ошибки не были созданы, продолжаются
    77.     if(!isset($error)){
    78.        
    79.         //хешируйте пароль
    80.         $hashedpassword = $user->password_hash($_POST['password'], PASSWORD_BCRYPT);
    81.        
    82.         //создайте код активации
    83.         $activasion = md5(uniqid(rand(),true));
    84.  
    85.         try {
    86.            
    87.             //вставьте в базу данных с подготовленным оператором
    88.             $stmt = $db->prepare('INSERT INTO members (username,password,email,phone,name,active) VALUES (:username, :password, :email, :phone, :name, :active)');
    89.             $stmt->execute(array(
    90.                 ':username' => $_POST['username'],
    91.                 ':password' => $hashedpassword,
    92.                 ':email' => $_POST['email'],
    93.                 ':phone' => $_POST['phone'],
    94.                 ':name' => $_POST['name'],
    95.                 ':active' => $activasion
    96.             ));
    97.             $id = $db->lastInsertId('memberID');
    98.            
    99.             //посылать электронное письмо
    100.             $to = $_POST['email'];
    101.             $subject = "Регистрационное подтверждение";
    102.             $body = "<p>Спасибо за регистрацию на сайте.</p>
    103.             <p>Чтобы активировать Вашу учетную запись, нажмите на эту ссылку: <a href='".DIR."activate.php?x=$id&y=$activasion'>".DIR."activate.php?x=$id&y=$activasion</a></p>
    104.             <p>Администратор сайта</p>";
    105.  
    106.             $mail = new Mail();
    107.             $mail->setFrom(SITEEMAIL);
    108.             $mail->addAddress($to);
    109.             $mail->subject($subject);
    110.             $mail->body($body);
    111.             $mail->send();
    112.            
    113.             //перенаправьте к индексной странице
    114.             header('Location: register.php?action=joined');
    115.             exit;
    116.        
    117.         //еще поймайте исключение и покажите ошибку
    118.         } catch(PDOException $e) {
    119.             $error[] = $e->getMessage();
    120.         }
    121.  
    122.     }
    123.  
    124. }
    125. <div class="container">
    126.  
    127.     <div class="row">
    128.  
    129.         <div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
    130.             <form role="form" method="post" action="" autocomplete="off">
    131.                 <h2>Регистрация пользователя</h2>
    132.                 <p>Уже загегистрированы? <a href='login.php'>Вход</a></p>
    133.                 <hr>
    134.  
    135.                 <?php
    136.                
    137.                 //проверьте на любые ошибки
    138.                 if(isset($error)){
    139.                     foreach($error as $error){
    140.                         echo '<p class="bg-danger">'.$error.'</p>';
    141.                     }
    142.                 }
    143.                
    144.                 //если к действию присоединяются, показывают успех
    145.                 if(isset($_GET['action']) && $_GET['action'] == 'joined'){
    146.                     echo "Успешная регистрация, проверьте свою электронную почту, чтобы активировать Вашу учетную запись.";
    147.                 }
    148.                 ?>
    149.  
    150.                 <div class="form-group">
    151.                     <input type="text" name="username" id="username" class="form-control input-lg" placeholder="Логин" value="<?php if(isset($error)){ echo $_POST['username']; } ?>" tabindex="1">
    152.                 </div>
    153.                 <div class="form-group">
    154.                     <input type="email" name="email" id="email" class="form-control input-lg" placeholder="Email" value="<?php if(isset($error)){ echo $_POST['email']; } ?>" tabindex="2">
    155.                 </div>
    156.                 <div class="form-group">
    157.                     <input type="phone" name="phone" id="phone" class="form-control input-lg" placeholder="Телефон" value="<?php if(isset($error)){ echo $_POST['phone']; } ?>" tabindex="2">
    158.                 </div>
    159.                 <div class="form-group">
    160.                     <input type="name" name="name" id="name" class="form-control input-lg" placeholder="Ваше имя" value="<?php if(isset($error)){ echo $_POST['name']; } ?>" tabindex="2">
    161.                 </div>
    162.                
    163.                 <div class="row">
    164.                     <div class="col-xs-6 col-sm-6 col-md-6">
    165.                         <div class="form-group">
    166.                             <input type="password" name="password" id="password" class="form-control input-lg" placeholder="Пароль" tabindex="3">
    167.                         </div>
    168.                     </div>
    169.                     <div class="col-xs-6 col-sm-6 col-md-6">
    170.                         <div class="form-group">
    171.                             <input type="password" name="passwordConfirm" id="passwordConfirm" class="form-control input-lg" placeholder="Повторите пароль" tabindex="4">
    172.                         </div>
    173.                     </div>
    174.                 </div>
    175.  
    176.                 <div class="row">
    177.                     <div class="col-xs-6 col-md-6"><input type="submit" name="submit" value="Регистрация" class="btn btn-primary btn-block btn-lg" tabindex="5"></div>
    178.                 </div>
    179.             </form>
    180.         </div>
    181.     </div>
    182.  
    183. </div>
     
  11. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    PHP:
    1. $stmt = $db->prepare('SELECT name FROM members WHERE username= :username');
    2. $stmt->execute(array(':username' => filter_input(INPUT_POST, 'username')));
    3. $row = $stmt->fetch(PDO::FETCH_ASSOC);
    4. echo $row['name'];
     
  12. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
  13. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Да я сразу исправил почти, по памяти писал, редко ее юзал.
     
  14. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Все таки, глянь, что функция еще может вернуть.
     
  15. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.799
    Симпатии:
    1.331
    Адрес:
    Лень