Выводится неизвестная ошибка?

245
27 ноября 2017, 19:30

Почему у меня выводиться такая ошибка? В подключении в бд я указал все верно, но мне пишут ошибка в 3 строке

Вот сам скрипт полностью:

<?php
session_start();
$link = new PDO('mysql:host=localhost;dbname=e96548p5_test', 'пароль', );
if(isset($_POST['submit1'])) {
$stmt = $link->prepare("SELECT * FROM accreg WHERE mail = ?");
$stmt->execute([$_POST['mail']]);
$data = $stmt->fetch();
if (password_verify($_POST['password'], $data['password']))
{
$_SESSION['id'] = $data['id']; 
$_SESSION['mail'] = $data['mail'];
setcookie('mail', $data['mail'], time()+60*60*24*30); 
header ('Location: profile.php');
} 
else {
    echo "Данные неверны";
}
}
?>
<!DOCTYPE html>
<htm>
    <head>
        <title>Тест</title>
        <meta charset="utf-8">
    </head>
    <body>
<?php
//----------------------------------------------------------------
//Обработчик регистрации  и вdод данных в бд
    if(isset($_POST['submit'])) {
         $err = [];
      if(empty($_POST['name'])) {
        echo '<p id="errname"><img src="/libs/err.png" id="errimgname">Вы не указали ник!</p>';
       }
      elseif (!preg_match("/^[a-z0-9а-яё_]{4,12}+$/iu", $_POST['name'])) {
        echo '<p id="errname2">В нике указаны недопустимые символы или содержит меньше/больше 4/12 символов.<br>Разрешается использовать латинские и руские буквы,<br>Цыфры и знак подчеркивание</p> ';
       }
      if (!preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $_POST['mail'])) {
        echo '<p id="errmail1">E-mail имеет недопустимий формат!</p>';
       }
      if(empty($_POST['password'])) {
        echo '<p id="errpass1">Введите пароль!</p>';
       }
      elseif(!preg_match("/\A(\w){6,20}\Z/", $_POST['password'])) {
        echo '<p id="errpass2">Пароль слишком короткий! Пароль должен быть не менее 6 символов!</p> ';
       }
      if(empty($_POST['password1'])) {
        echo '<p id="errpass3">Введите подтверждение пароля!</p>';
       }
      else if($_POST['password'] != $_POST['password1']) {
        echo '<p id="errpass4">Введенные пароли не совпадают!</p>';
       }
       if(empty($_POST['sex'])) {
        echo '<p id="errsex">Укажите Ваш пол</p>';
      }
       else{
       $name = $_POST['name'];
       $mail = $_POST['mail'];
       $password = $_POST['password'];
       $hash =  password_hash($password, PASSWORD_BCRYPT);
       $query = $link->prepare('SELECT mail FROM accreg WHERE mail = :mail');
       $query->execute(['mail' => $_POST['mail']]);
       if($query->fetch()) { 
           echo '<p id="errmail2">Это E-mail уже зарегистрирован</p>'; 
       }
      else{
      $query = $link ->prepare("INSERT INTO `accreg` (`id`, `name`, `mail`, `password`) VALUES (:id, :name, :mail, :password)");
       $query -> bindParam(':name', $name, PDO::PARAM_STR);
       $query -> bindParam(':mail', $mail, PDO::PARAM_STR);
       $query -> bindParam(':password', $hash, PDO::PARAM_STR);
       $query->execute();
      }
     }
   }
?>
        <!-------Регистрация------->
        <form action="" method="post">
            <input type="text" name="name" placeholder="Введите Ник" id="formreg"><br><br>
            <input type="text" name="mail" placeholder="Введите Эл. почту" id="formreg1"><br>
            <p id="errmail">Например: name123@mail.ru</p>
            <input type="password" name="password" placeholder="Укажите пороль" id="formreg2" ><br>
            <p id="errpass">Пароль должен содержать не менее 6 символов<br> (только латинские буквы и цыфры)<br>Например: Sk31HDM194</p><br>
            <input type="password" name="password1" placeholder="Повторите пороль" id="formreg3"><br><br>
            <div id="formreg4"><input name="sex" type="radio" value="male"><label style="font-size: 20px;">Мужской</label><input name="sex" type="radio" value="feminine"><label style="font-size: 20px;">Женский</label><br><br></div>
           <input name="submit" type="submit" value="Создать аккаунт" id="reg">
        </form>
        <br><br><br>
<!-------Авторизация----->
  <form action="" method="post">
  <input type="text" name="mail" placeholder="Логин Эл. почта" id="formlog"></br>
  <input type="password" name="password"   placeholder="Пороль" id="formpass"></br>
  <input type='checkbox'><br>
  <input type="submit" name="submit1" value="Авторизоваться" id="open"></br>
  </form>
    </body>
</htm>
Answer 1
$link = new PDO('localhost' , 'e96548p5_test', 'пароль' );

попробуйте

READ ALSO
Нужно удалить строку из таблицы при нажатии на кнопку

Нужно удалить строку из таблицы при нажатии на кнопку

Всем привет мне нужно чтобы на экран выводило таблицу с данными и возле каждой строки была кнопка "Удалить пользователя" при нажатии на которую...

258
SQL Инъекция без GET параметров | PHP

SQL Инъекция без GET параметров | PHP

Возможны ли SQL инъекции если на сайте не используются GET параметры ?

154
Редактирование изображений на сервере

Редактирование изображений на сервере

Доброго времени сутокЗаказчик поставил такую задачу

164
Помогите по php [требует правки]

Помогите по php [требует правки]

Здравствуйте, мне нужна помощь, хотел сделать вычитание у всех users, коду что на строке от 57 до 60, так вот у меня это вычитание так идет, если...

238