Форма входа

Unatka.ru

При­ме­ры ко­да php + MariaDB

Прос­тая форма входа php + MariaDB

    С помощью php и MariaDB может быть соз­дана простая форма входа. Рас­смот­рим на ее примере об­ра­бот­ку форм.

    Формы можно ис­поль­зовать, помимо всего прочего, для передачи данных в БД. Код php, пере­да­ющий данные, по­тре­бует пере­за­груз­ки стра­ницы. Иногда бывает важ­ным, чтобы дан­ные из формы пере­да­ва­лись без пере­за­груз­ки стра­ницы. В таком случае ис­поль­зуем javascript.

    Пов­то­рюсь, если данные пере­дают­ся с помощью php, страница обя­за­тель­но пере­за­гру­жает­ся.

    Нам нужно передать данные поль­зо­ва­теля в базу. Для этого в БД создаем таблицу поль­зо­ва­те­лей. Назовем ее, хотя бы, users.

    Первым столбцом ставим id, вторым name — адрес элект­рон­ной почты поль­зо­ва­те­ля. Если нужно что-то еще от поль­зо­ва­теля, вводим до­пол­ни­тель­ные столбцы и, со­ответ­ствен­но, поля в форму входа. Я покажу как получить элект­рон­ный адрес поль­зо­ва­теля через форму входа и внести этот адрес в базу данных.

    Пишем код, начиная с создания формы. Создаем папку на сервере с любым именем на транслите или английском языке. Статья посвящена форме входа, так что создаем файл с расширениями html, называем его как-нибудь, сохраняем в созданной папке и начинаем творить.

Сначала напишем форму в файле html:

<!DOCTYPE html>

<html>

  <head>

    <meta charset = "utf-8"/>

    <title>Форма</title>

  </head>

  <body>

<!-- Форма с об­ра­бот­чи­ком по имени trabajar.php, метод передачи данных POST-->

    <form action = "trabajar.php" method = "POST">

<!--Поле, которое будет пе­ре­да­вать данные. Имя поля name, значение оставляем пустым. В пустое поле поль­зо­ва­тель введет свои данные -->

      <input type = "text" name = "name" value = " " />

<!-- Кнопка, нажатие на которую за­став­ляет форму срабо­тать и передать дан­ные в файл об­ра­бот­чик -->

      <input type = "submit" name = "button" value = "Войти" >

    </form>

  </body>

</html>

В ту же папку помещаем файл - об­ра­ботчик trabajar.php

<?php

//Задаем кодировку

header ( " Content - Type : text/html; charset = utf-8 " );

//Принимаемые переменные

if ( isset($_POST[' button '] ) )

$button = htmlspecialchars ( strip_tags ( trim ( $_POST[ ' button ' ] ) ) );

  if (isset ( $button ) ) {

    if (isset ( $_POST[' name '] ) )

      $name = htmlspecialchars ( strip_tags ( trim ( $_POST[ 'name' ] ) ) );

}

$mysqli = new mysqli ( ' localhost ', ' Admin ' , ' pass ' , ' mybase ' );

 

//Проверка подключения

if ( mysqli _ connect _ errno() ) {

echo " Подключение невозможно: " .mysqli _ connect _ error ();

}

 

//Опре­де­ля­ем ко­ди­ров­ку

$mysqli -> query (" SET NAMES 'utf8' " );

 

//Обработка переменных перед передачей в БД

if ( isset ( $name ) )

  $name = $mysqli -> real _ escape _ string ( $name );

//Создаем массив ошибок

$err = array();

//Проверяем поля на пустоту

    if ( $name === " " ) $err[] = " Поля должны быть заполнены ";

    if ( !preg _ match ("  /^[-\w.] + @([A-z0-9][-A-z0-9] + \. ) + [ A-z ] { 2,4 } $/i  ",  $name ) )

    $err[] = " Не­кор­рект­ный адрес элект­рон­ной почты ";

//Считаем количество ошибок

$mirror = count( $err );

//Если нет ошибок в передаваемых данных,

if ( $mirror === 0) {

$mysqli -> query ( " SET NAMES 'utf8' " );

    if ( isset ( $name ) )

      $result = $mysqli -> query ( " SELECT * FROM users WHERE name = '$name' ");

        $myrow = $result -> fetch _ assoc();

//Если данные существуют в базе, присваиваем сессию

if ( isset ( $myrow ) ) {

  SESSION[' name '] = $myrow[' name '];

//Очищаем выборку

if ( isset ( $result ) ) $result -> close();

}

//Если данные пришли, но их нет в базе

else {

$mysqli -> query (" SET NAMES 'utf8' ");

$query = " INSERT INTO users VALUES( ' ".$name." ' ) ";

//Вписываем данные в таблицу users

$result = $mysqli -> query( $query );

//Если данные успешно занесены в таблицу

if( $result === TRUE ) {

//Присваиваем сессию

$ _ SESSION[ 'name' ] = $name;

      }

   }

}

//Если не так, то выводим ошибку

else {

  echo " <strong> При ре­ги­стра­ции произошли следующие ошибки: </strong> <br>";

    foreach( $err as $error ) echo $error. " <br> ";

}

?>

    Здесь по­лу­ча­емые из формы данные — имя поль­зо­ва­теля name, сначала об­ра­ба­ты­ваем его при по­лу­че­нии из фор­мы функ­ци­ей htmlspecialchars и другими. Затем, при передаче в СУБД об­ра­ба­ты­ва­ем функцией real _ escape _ string. Обработки выполняются, чтобы обеспечить без­опас­ность получаемых данных. Уточняю: оба файла - файл html, который содержит разметку формы, и файл - обработчик php помещаем в одну папку. Вызывая формы, открываем в браузере файл html.

    Это простой пример того, как работает форма входа на сайт. При необходимости добавляются до­пол­ни­тель­ные проверки, вносятся другие данные. Все зависит от тре­бо­ва­ний, предъяв­ляемых к форме входа.

    Для проверки ра­бо­то­спо­соб­ности кода, открываем файл формы в браузере и тестируем его.

    Примерно также об­ра­ба­ты­ваются любые формы html.

Родионова Галина

2018-03-19


◄ Назад 

 Вперед ►

Поделитесь с друзьями!

Закрыть
Форма входа

Я согласен(на) на обработку моих персональных данных