// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Урок 3: Создание нового пользователя приложения
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Урок 3: Создание нового пользователя приложения - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Урок 3: Создание нового пользователя приложения

В этом уроке рассматривается расширение приложения добавлением функции "Create a New Wisher".

Реализация затрагивает файл index.php, и при этом будут созданы два новых файла с именами  ``createNewWisher.php``  и  ``editWishList.php`` .

Данный пример использования Create a New Wisher ("Создание нового пользователя") состоит из трех действий:

1. <<addLinkNewWisher,Пользователь открывает файл index.php титульной страницы и щелкает ссылку для регистрации>>.
2. <<implementCreateNewWisher,Пользователь переходит на страницу createNewWisher.php для создания нового автора пожелания>>.
3. После создания нового автора пожелания пользователь переключается на editWishList.php, где для него можно создать список желаний.

image::images/page-flow-diagram-l3.png[]

Текущий документ является частью краткого учебного курса "Создание приложения базы данных в IDE NetBeans для PHP".



== Исходный код приложения из предыдущего урока

Для пользователей MySQL: перейдите по link:https://netbeans.org/files/documents/4/1928/lesson2.zip[+этой ссылке+] для загрузки исходного кода, описывающего состояние проекта на момент завершения предыдущего урока.

Для пользователей Oracle Database: щелкните link:https://netbeans.org/projects/www/downloads/download/php%252Foracle-lesson2.zip[+здесь+] для загрузки исходного кода, отражающего состояние проекта по завершении предыдущего урока.


== Добавление ссылки для начала создания нового автора пожелания

Откройте  ``index.php`` . Добавьте пустую строку под закрывающим тегом </form>. Введите в эту пустую строку следующий блок кода:


[source,html]
----

 <br>Still don't have a wish list?! <a href="createNewWisher.php">Create now</a>
----

Где

*  ``Still don't have a wish list?! ``  – это текст, который отобразится на странице рядом со ссылкой.
*  ``<a href="createNewWisher.php"></a>``  – это код ссылки, открывающей страницу createNewWisher.php.
*  ``Create now``  – это текст, который отобразится в качестве ссылки.


== Создание новых веб-страниц PHP

Создайте две новые веб-страницы PHP в исходных файлах проекта, как link:wish-list-lesson2.html#createNewFile[+описано+] в уроке 2.

*  ``createNewWisher.php`` 
*  ``editWishList.php`` 

В  ``editWishList.php``  добавьте текст "Hello!" к тексту в формате HTML, а в остальном оставьте всё как было. Этот файл будете изменен в последующих уроках, однако на данный момент он необходим в качестве объекта ссылки для  ``createNewWisher.php`` . В оставшейся части этого урока рассматривается изменение файла  ``createNewWisher.php`` .


== Добавление формы HTML для ввода данных нового автора пожелания

Введите или вставьте следующий блок HTML в строку  ``createNewWisher.php``  под блоком PHP:


[source,html]
----

<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>Welcome!<br><form action="createNewWisher.php" method="POST">Your name: <input type="text" name="user"/><br/>Password: <input type="password" name="password"/><br/>Please confirm your password: <input type="password" name="password2"/><br/><input type="submit" value="Register"/></form></body>
</html>
----

NOTE:  Тип  ``password``  это специальный тип текстового поля, в котором символы заменяются звездочками. Код представляет собой link:wish-list-lesson3.html#htmlForm[+форму HTML+], позволяющую ввести имя и пароль нового автора пожелания в текстовые поля. При нажатии кнопки "Register" введенные данные передаются для проверки допустимости на ту же страницу –  ``createNewWisher.php`` .

NOTE: Предупреждения от средства проверки HTML можно проигнорировать.


=== Проверка допустимости данных и добавление их в базу данных

В этом разделе мы добавим код PHP к  ``createNewWisher.php`` . Добавьте этот код к блоку PHP на верху файла. Блок PHP должен находиться над кодом HTML *all*, пустыми строками или пробелами. Расположение блока кода PHP является важным для правильного функционирования оператора переадресации. Внутри блока PHP введите или вставьте в указанном порядке блоки кода, описанные ниже в данном разделе.

*Добавьте следующий код для проверки допустимости данных:*

1. Необходимо инициализировать переменные. Первая группа переменных осуществляет передачу параметров доступа к базе данных, а другая группа переменных используется в работе кода PHP.

[source,php]
----

/** database connection credentials */$dbHost="localhost"; //on MySql
$dbXeHost="localhost/XE"; $dbUsername="phpuser";$dbPassword="phpuserpw";

/** other variables */
$userNameIsUnique = true;
$passwordIsValid = true;				
$userIsEmpty = false;					
$passwordIsEmpty = false;				
$password2IsEmpty = false;	

			
----


. Под переменными следует добавить блок  ``if `` . Параметр блока  ``if``  выполняет проверку того, что страница была запрошена из нее самой посредством метода POST. Если это не так, дальнейшие проверки допустимости не выполняются, и на экран выводится страница с пустыми полями, как описано выше.

[source,php]
----

/** Check that the page was requested from itself via the POST method. */
if ($_SERVER["REQUEST_METHOD"] == "POST") {

}
----


. Внутри фигурных скобок блока  ``if ``  добавьте другой блок  ``if `` , позволяющий проверить, ввел ли пользователь имя автора пожелания в поле. Если текстовое поле "user" является пустым, значение  ``$userIsEmpty``  меняется на "true".

[source,php]
----

/** Check that the page was requested from itself via the POST method. */
if ($_SERVER["REQUEST_METHOD"] == "POST") {

/** Check whether the user has filled in the wisher's name in the text field "user" */    *
    if ($_POST["user"]=="") {
    $userIsEmpty = true;
    }*
}
----


.  Добавьте код, устанавливающий подключение к базе данных. Если установить подключение невозможно, то выводится ошибка MySQL или Oracle OCI8.

*Для базы данных MySQL*


[source,php]
----

/** Check that the page was requested from itself via the POST method. */
if ($_SERVER["REQUEST_METHOD"] == "POST") {

/** Check whether the user has filled in the wisher's name in the text field "user" */    
    if ($_POST["user"]=="") {
        $userIsEmpty = true;
    }

    /** Create database connection */*$con = mysqli_connect($dbHost, $dbUsername, $dbPassword);
if (!$con) {
exit('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
//set the default client character set 
mysqli_set_charset($con, 'utf-8');*
} 
----

*Для базы данных Oracle*


[source,php]
----

/** Check that the page was requested from itself via the POST method. */
if ($_SERVER['REQUEST_METHOD'] == "POST") {

/** Check whether the user has filled in the wisher's name in the text field "user" */
    if ($_POST['user'] == "") {
        $userIsEmpty = true;
    }

    /** Create database connection */*$con = oci_connect($dbUsername, $dbPassword, $dbXeHost, "AL32UTF8");
    if (!$con) {
        $m = oci_error();
        exit('Connect Error' . $m['message']);

    }*
}
----


. Добавьте код, позволяющий проверить, существует ли пользователь, имя которого соответствует указанному в поле "user". Эта задача выполняется путем поиска идентификационного номера автора пожелания в соответствии с именем, указанным в поле "user". Если такой номер существует, значение  ``$userNameIsUnique``  меняется на "false".

*Для базы данных MySQL*


[source,php]
----

/** Check that the page was requested from itself via the POST method. */
if ($_SERVER["REQUEST_METHOD"] == "POST") {

/** Check whether the user has filled in the wisher's name in the text field "user" */

    if ($_POST["user"]=="") {
        $userIsEmpty = true;
    }/** Create database connection */$con = mysqli_connect($dbHost, $dbUsername, $dbPassword);if (!$con) {exit('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());}*/**set the default client character set */ 
mysqli_set_charset($con, 'utf-8');*
   */** Check whether a user whose name matches the "user" field already exists */**mysqli_select_db($con, "wishlist");
    $user = mysqli_real_escape_string($con, $_POST["user"]);
$wisher = mysqli_query($con, "SELECT id FROM wishers WHERE name='".$user."'");
$wisherIDnum=mysqli_num_rows($wisher);
if ($wisherIDnum) {
$userNameIsUnique = false;
}*
} 
----

*Для базы данных Oracle*


[source,php]
----

/** Check that the page was requested from itself via the POST method. */
if ($_SERVER['REQUEST_METHOD'] == "POST") {
/** Check whether the user has filled in the wisher's name in the text field "user" */
    if ($_POST['user'] == "") {
        $userIsEmpty = true;
    }
    /** Create database connection */$con = oci_connect($dbUsername, $dbPassword, $dbXeHost, "AL32UTF8");
    if (!$con) {
        $m = oci_error();
        exit('Connection Error ' . $m['message']);

    }

   */** Check whether a user whose name matches the "user" field already exists */*
    *$query = "SELECT id FROM wishers WHERE name = :user_bv";
    $stid = oci_parse($con, $query);
    $user = $_POST['user'];
    $wisherID = null;
    oci_bind_by_name($stid, ':user_bv', $user);
    oci_execute($stid);

// Each user name should be unique. Check if the submitted user already exists.
    $row = oci_fetch_array($stid, OCI_ASSOC);
    if ($row){
        $userNameIsUnique = false;
    }*
}
----


. После кода, проверяющего уникальность пользователя, добавьте серию блоков  ``if `` , проверяющих, правильно ли пользователь ввел и подтвердил пароль. Код выполняет проверку того, что поля "Password" ("password") и "Confirm Password" ("password2") заполнены и идентичны друг другу. В противном случае значения соответствующих логических переменных также изменяются.

[source,php]
----

if ($_POST["password"]=="") {$passwordIsEmpty = true;
}if ($_POST["password2"]=="") {$password2IsEmpty = true;
}if ($_POST["password"]!=$_POST["password2"]) {$passwordIsValid = false;
} 
----


.  Завершите блок  ``if ($_SERVER['REQUEST_METHOD'] == "POST")`` , добавив код, вставляющий новую запись в базу данных "Wishers". В соответствии с кодом выполняется проверка того, что имя пользователя указано однозначно и что пароль введен и подтвержден правильно. Если эти условия выполнены, код извлекает значения "user" и "password" из формы HTML и вставляет их соответственно в столбцы "Name" и "Password", относящиеся к новой строке в базе данных "Wishers". После создания строки код закрывает подключение к базе данных и переадресует приложение на страницу  ``editWishList.php`` .

*Для базы данных MySQL*


[source,php]
----

/** Check that the page was requested from itself via the POST method. */
if ($_SERVER['REQUEST_METHOD'] == "POST") {
    /** Check whether the user has filled in the wisher's name in the text field "user" */
    if ($_POST['user'] == "") {
        $userIsEmpty = true;
    }

    /** Create database connection */
    $con = mysqli_connect($dbHost, $dbUsername, $dbPassword);
    if (!$con) {
        exit('Connect Error (' . mysqli_connect_errno() . ') '
                . mysqli_connect_error());
    }
    //set the default client character set 
    mysqli_set_charset($con, 'utf-8');

    /** Check whether a user whose name matches the "user" field already exists */
    mysqli_select_db($con, "wishlist");
    $user = mysqli_real_escape_string($con, $_POST['user']);
    $wisher = mysqli_query($con, "SELECT id FROM wishers WHERE name='".$user."'");
    $wisherIDnum=mysqli_num_rows($wisher);
    if ($wisherIDnum) {
        $userNameIsUnique = false;
    }

    /** Check whether a password was entered and confirmed correctly */
    if ($_POST['password'] == "") {
        $passwordIsEmpty = true;
    }
    if ($_POST['password2'] == "") {
        $password2IsEmpty = true;
    }
    if ($_POST['password'] != $_POST['password2']) {
        $passwordIsValid = false;
    }

    /** Check whether the boolean values show that the input data was validated successfully.
     * If the data was validated successfully, add it as a new entry in the "wishers" database.
     * After adding the new entry, close the connection and redirect the application to editWishList.php.
     */
    *if (!$userIsEmpty &amp;&amp; $userNameIsUnique &amp;&amp; !$passwordIsEmpty &amp;&amp; !$password2IsEmpty &amp;&amp; $passwordIsValid) {
        $password = mysqli_real_escape_string($con, $_POST['password']);
        mysqli_select_db($con, "wishlist");
        mysqli_query($con, "INSERT wishers (name, password) VALUES ('" . $user . "', '" . $password . "')");
        mysqli_free_result($wisher);
        mysqli_close($con);
        header('Location: editWishList.php');
        exit;
    }*
}
----

*Для базы данных Oracle*


[source,php]
----

/** Check that the page was requested from itself via the POST method. */
if ($_SERVER['REQUEST_METHOD'] == "POST") {

/** Check whether the user has filled in the wisher's name in the text field "user" */
    if ($_POST['user'] == "")
        $userIsEmpty = true;

    /** Create database connection */
    $con = oci_connect($dbUsername, $dbPassword, $dbXeHost, "AL32UTF8");
    if (!$con) {
        $m = oci_error();
        echo $m['message'], "\n";
        exit;
    }
    
    /** Check whether a user whose name matches the "user" field already exists */
    $query = "select ID from wishers where name = :user_bv";
    $stid = oci_parse($con, $query);
    $user = $_POST['user'];
    $wisherID = null;
    oci_bind_by_name($stid, ':user_bv', $user);
    oci_execute($stid);

/**Each user name should be unique. Check if the submitted user already exists. */
    $row = oci_fetch_array($stid, OCI_ASSOC);
    if ($row) {
    $wisherID = $row['ID']; 
    }
    if ($wisherID != null) {
        $userNameIsUnique = false;
    }
    //Check for the existence and validity of the password
    if ($_POST['password'] == "") {
        $passwordIsEmpty = true;
    }
    if ($_POST['password2'] == "") {
        $password2IsEmpty = true;
    }
    if ($_POST['password'] != $_POST['password2']) {
        $passwordIsValid = false;
    }
    /** Check whether the boolean values show that the input data was validated successfully.
     * If the data was validated successfully, add it as a new entry in the "wishers" database.
     * After adding the new entry, close the connection and redirect the application to editWishList.php.
     */
    *if (!$userIsEmpty &amp;&amp; $userNameIsUnique &amp;&amp; !$passwordIsEmpty &amp;&amp; !$password2IsEmpty &amp;&amp; $passwordIsValid) {

        $query = "INSERT INTO wishers (name, password) VALUES (:user_bv, :pwd_bv)";
        $stid = oci_parse($con, $query);
        $pwd = $_POST['password'];
        oci_bind_by_name($stid, ':user_bv', $user);
        oci_bind_by_name($stid, ':pwd_bv', $pwd);
        oci_execute($stid);
        oci_free_statement($stid);
        oci_close($con);
        header('Location: editWishList.php');
        exit;
    }*
}
----


== Отображение сообщений об ошибках в форме ввода

Перейдем к реализации вывода сообщений об ошибках при неверно введенных данных. Реализация основывается на проверках допустимости и изменении значений логических переменных, описанных в разделе <<validatinDataBeforeAddingToDatabase,Проверка допустимости данных и добавление их в базу данных>>.

1. Введите следующий блок кода PHP в форме ввода HTML непосредственно под именем пользователя:

[source,php]
----

Welcome!<br><form action="createNewWisher.php" method="POST">Your name: <input type="text" name="user"/><br/>

*<?php
    if ($userIsEmpty) {
        echo ("Enter your name, please!");
        echo ("<br/>");
    }                
    if (!$userNameIsUnique) {
        echo ("The person already exists. Please check the spelling and try again");
        echo ("<br/>");
    }
    ?> *
----


. Введите следующий блок кода PHP в форме ввода HTML под кодом для ввода пароля:

[source,php]
----

Password: <input type="password" name="password"/><br/>
*<?php
 if ($passwordIsEmpty) {
     echo ("Enter the password, please!");
     echo ("<br/>");
 }                
 ?>*
----


. Введите следующий блок кода PHP в форме ввода HTML под кодом для подтверждения пароля:

[source,php]
----

Please confirm your password: <input type="password" name="password2"/><br/>


*<?php
 if ($password2IsEmpty) {
     echo ("Confirm your password, please");
     echo ("<br/>");    
 }                
 if (!$password2IsEmpty &amp;&amp; !$passwordIsValid) {
     echo  ("The passwords do not match!");
     echo ("<br/>");  
 }                 
?>*
----


=== Тестирование функциональных возможностей по созданию нового пользователя "Create New Wisher"

1. Запустите приложение. Откроется страница-указатель.

image::images/index-php-3.png[]


. На странице-указателе щелкните ссылку рядом с текстом "Still don't have a wish list?" Откроется следующая форма:

image::images/create-new-wisher-empty-form.png[]


. Оставьте поля пустыми и нажмите кнопку Register ("Зарегистрировать"). На экране появится сообщение об ошибке.

image::images/create-new-wisher-name-empty.png[]


. Введите имя зарегистрированного пользователя, например, "Tom" в поле "Your name", внимательно заполните другие поля и нажмите кнопку "Register". На экране появится сообщение об ошибке.


. Заполните поля "Password" и "Please confirm your password" различными значениями и нажмите кнопку "Register". На экране появится сообщение об ошибке.


. Введите "Bob" в поле "Your name", укажите в полях пароля один и тот же пароль и нажмите кнопку "Register". Откроется пустая страница, однако переадресация осуществляется правильно, поскольку URL-адрес заканчивается текстом "editWishList.php":

image::images/edit-wish-list-empty.png[]


. Проверьте, что данные сохранены в базе данных, путем перехода к разделу "Wishers" в окне "Services", расположенном под узлом "wislist1", и выбора "View Data" в контекстном меню 

image::images/wishers.png[]


== Исходный код приложения на момент завершения текущего урока

Для пользователей MySQL: щелкните link:https://netbeans.org/files/documents/4/1929/lesson3.zip[+сюда+] для загрузки исходного кода, отражающего состояние проекта по завершении данного урока.

Для пользователей Oracle Database: щелкните link:https://netbeans.org/projects/www/downloads/download/php%252Foracle-lesson3.zip[+сюда+] для загрузки исходного кода, отражающего состояние проекта по завершении данного урока.


== Что дальше?

link:wish-list-lesson2.html[+<<Предыдущий урок+]

link:wish-list-lesson4.html[+Следующий урок >>+]

link:wish-list-tutorial-main-page.html[+Назад на главную страницу руководства+]


link:/about/contact_form.html?to=3&subject=Feedback:%20PHP%20Wish%20List%20CRUD%203:%20Creating%20New%20User[+Отправить отзыв по этому учебному курсу+]


Для отправки комментариев и предложений, получения поддержки и новостей о последних разработках, связанных с PHP IDE NetBeans link:../../../community/lists/top.html[+присоединяйтесь к списку рассылки users@php.netbeans.org+].

link:../../trails/php.html[+Возврат к учебной карте PHP+]

