Здравствуйте. Помогите, пожалуйста. Вот авторизация на сайте PHP: PHP: if(isset($_POST['submit'])){ $username = $_POST['username']; $password = $_POST['password']; if($user->login($username,$password)){ $_SESSION['username'] = $username; header('Location: memberpage.php'); exit; } else { $error[] = 'Неверный логин или пароль.'; } } но при регистрации пользователь указывает еще и имя на русском как можно вывести Имя? PHP: PHP: <?php echo ($_SESSION['name'])?> так у меня не вышло((
@Dasha97, как я понял, эта инфа хранится где то, так, сначала надо это имя получить из базы. а потом вывести. --- Добавлено --- А если в качестве места хранения используются сессии то надо туда сохранить. Я не вижу, чтобы вы его туда сохранили.
PHP: <?php //подключаем конфигурацию require_once('includes/config.php'); session_start(); //если пользователь уже вошел то перенапровление на главную if( $user->is_logged_in() ){ header('Location: index.php'); } //обрабатываем форму if(isset($_POST['submit'])){ $username = $_POST['username']; $password = $_POST['password']; if($user->login($username,$password)){ $_SESSION['username'] = $username; header('Location: memberpage.php'); exit; } else { $error[] = 'Неверный логин или пароль.'; } }//конец входа Вот как вход происходит
Вход PHP: <form role="form" method="post" action="" autocomplete="off"> <h2>Вход</h2> <p><a href='register.php'>Еще не зарегистрированы?</a></p> <hr> <?php //проверка на ошибки if(isset($error)){ foreach($error as $error){ echo '<p class="bg-danger">'.$error.'</p>'; } } if(isset($_GET['action'])){ //проверка на активацию switch ($_GET['action']) { case 'active': echo "<h2 class='bg-success'>Ваша учетная запись теперь активна, Вы можете теперь войти в систему.</h2>"; break; case 'reset': echo "<h2 class='bg-success'>Проверьте свой Email.</h2>"; break; case 'resetAccount': echo "<h2 class='bg-success'>Пароль изменился, Вы можете теперь войти в систему.</h2>"; break; } } ?> <div class="form-group"> <input type="text" name="username" id="username" class="form-control input-lg" placeholder="Логин" value="<?php if(isset($error)){ echo $_POST['username']; } ?>" tabindex="1"> </div> <div class="form-group"> <input type="password" name="password" id="password" class="form-control input-lg" placeholder="Пароль" tabindex="3"> </div> <div class="row"> <div class="col-xs-9 col-sm-9 col-md-9"> <a href='reset.php'>Забыли пароль?</a> </div> </div> <hr> <div class="row"> <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> </div> </form>
Как я уже говорил, эти данные у вас в базе, они туда попадают во время регистрации. А форма, которую вы выложили - форма авторизации. Чтобы вывести Имя пользователя, нужно его сначала получить из базы и потом вывести.
Форма регистрации Код (Text): //если входил в систему перенаправление членской страницы if( $user->is_logged_in() ){ header('Location: memberpage.php'); } //если форма была представлена, обрабатывают его if(isset($_POST['submit'])){ //очень простая проверка допустимости if(strlen($_POST['username']) < 3){ $error[] = 'Имя пользователя слишком коротко.'; } else { $stmt = $db->prepare('SELECT username FROM members WHERE username = :username'); $stmt->execute(array(':username' => $_POST['username'])); $row = $stmt->fetch(PDO::FETCH_ASSOC); if(!empty($row['username'])){ $error[] = 'Введенное имя пользователя уже используется.'; } } //проверка имени if(strlen($_POST['name']) < 1){ $error[] = 'Имя слишком коротко.'; } else { $stmt = $db->prepare('SELECT name FROM members WHERE name = :name'); $stmt->execute(array(':name' => $_POST['name'])); $row = $stmt->fetch(PDO::FETCH_ASSOC); } //проверка телефона if(strlen($_POST['phone']) < 3){ $error[] = 'Телешон слишком короткий.'; } else { $stmt = $db->prepare('SELECT phone FROM members WHERE phone = :phone'); $stmt->execute(array(':phone' => $_POST['phone'])); $row = $stmt->fetch(PDO::FETCH_ASSOC); if(!empty($row['phone'])){ $error[] = 'Телефон уже используется.'; } } if(strlen($_POST['password']) < 3){ $error[] = 'Пароль слишком короткий.'; } if(strlen($_POST['passwordConfirm']) < 3){ $error[] = 'Пароль слишком короткий.'; } if($_POST['password'] != $_POST['passwordConfirm']){ $error[] = 'Пароли не совподают.'; } //почтовая проверка допустимости if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){ $error[] = 'Введите допустимый адрес электронной почты'; } else { $stmt = $db->prepare('SELECT email FROM members WHERE email = :email'); $stmt->execute(array(':email' => $_POST['email'])); $row = $stmt->fetch(PDO::FETCH_ASSOC); if(!empty($row['email'])){ $error[] = 'Электронная почта уже используется.'; } } //если никакие ошибки не были созданы, продолжаются if(!isset($error)){ //хешируйте пароль $hashedpassword = $user->password_hash($_POST['password'], PASSWORD_BCRYPT); //создайте код активации $activasion = md5(uniqid(rand(),true)); try { //вставьте в базу данных с подготовленным оператором $stmt = $db->prepare('INSERT INTO members (username,password,email,phone,name,active) VALUES (:username, :password, :email, :phone, :name, :active)'); $stmt->execute(array( ':username' => $_POST['username'], ':password' => $hashedpassword, ':email' => $_POST['email'], ':phone' => $_POST['phone'], ':name' => $_POST['name'], ':active' => $activasion )); $id = $db->lastInsertId('memberID'); //посылать электронное письмо $to = $_POST['email']; $subject = "Регистрационное подтверждение"; $body = "<p>Спасибо за регистрацию на сайте.</p> <p>Чтобы активировать Вашу учетную запись, нажмите на эту ссылку: <a href='".DIR."activate.php?x=$id&y=$activasion'>".DIR."activate.php?x=$id&y=$activasion</a></p> <p>Администратор сайта</p>"; $mail = new Mail(); $mail->setFrom(SITEEMAIL); $mail->addAddress($to); $mail->subject($subject); $mail->body($body); $mail->send(); //перенаправьте к индексной странице header('Location: register.php?action=joined'); exit; //еще поймайте исключение и покажите ошибку } catch(PDOException $e) { $error[] = $e->getMessage(); } } } <div class="container"> <div class="row"> <div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3"> <form role="form" method="post" action="" autocomplete="off"> <h2>Регистрация пользователя</h2> <p>Уже загегистрированы? <a href='login.php'>Вход</a></p> <hr> <?php //проверьте на любые ошибки if(isset($error)){ foreach($error as $error){ echo '<p class="bg-danger">'.$error.'</p>'; } } //если к действию присоединяются, показывают успех if(isset($_GET['action']) && $_GET['action'] == 'joined'){ echo "Успешная регистрация, проверьте свою электронную почту, чтобы активировать Вашу учетную запись."; } ?> <div class="form-group"> <input type="text" name="username" id="username" class="form-control input-lg" placeholder="Логин" value="<?php if(isset($error)){ echo $_POST['username']; } ?>" tabindex="1"> </div> <div class="form-group"> <input type="email" name="email" id="email" class="form-control input-lg" placeholder="Email" value="<?php if(isset($error)){ echo $_POST['email']; } ?>" tabindex="2"> </div> <div class="form-group"> <input type="phone" name="phone" id="phone" class="form-control input-lg" placeholder="Телефон" value="<?php if(isset($error)){ echo $_POST['phone']; } ?>" tabindex="2"> </div> <div class="form-group"> <input type="name" name="name" id="name" class="form-control input-lg" placeholder="Ваше имя" value="<?php if(isset($error)){ echo $_POST['name']; } ?>" tabindex="2"> </div> <div class="row"> <div class="col-xs-6 col-sm-6 col-md-6"> <div class="form-group"> <input type="password" name="password" id="password" class="form-control input-lg" placeholder="Пароль" tabindex="3"> </div> </div> <div class="col-xs-6 col-sm-6 col-md-6"> <div class="form-group"> <input type="password" name="passwordConfirm" id="passwordConfirm" class="form-control input-lg" placeholder="Повторите пароль" tabindex="4"> </div> </div> </div> <div class="row"> <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> </div> </form> </div> </div> </div>
PHP: $stmt = $db->prepare('SELECT name FROM members WHERE username= :username'); $stmt->execute(array(':username' => filter_input(INPUT_POST, 'username'))); $row = $stmt->fetch(PDO::FETCH_ASSOC); echo $row['name'];