Четенето на файл и записването на информация в него на сървъра е само част от процеса на съхраняване на данни. Може да поискате да използвате и директории. Какво е директория? Директорията e място за съхраняване на файлове или други директории (папки).
Създаване на директория
Вградената в РНР функция за създаване на директория е mkdir ().
Синтаксисът на функцията mkdir () е:
bool mkdir ( string $pathname [,int $mode [,bool $recursive [,resource $context]]])
$pathname- задължителен параметър. Показва пътя до мястото, където искате да създадете директорията.
$mode- незадължителен параметър. Определя правата за достъп (http://dreamlandpoly.blogspot.com/p/files-2.html) до директорията, която ще се създава. По подразбиране стойността на този параметър е 0777. При работа с операционна система Windows, този параметър се игнорира.
$recursive- незадължителен параметър. Може да приема стойности TRUE или FALSE.
$context- незадължителен параметър.
По подразбиране функцията mkdir () създава директория, ако нейната родителска съществува. Ако искате да създадете директория, но родителската ѝ не съществува, използвайте параметъра $recursive. В този случай едновременно ще се създадат и родителската, и желаната директория.
Повече информация за функцията mkdir () можете да намерите на адрес: http://php.net/
bool mkdir ( string $pathname [,int $mode [,bool $recursive [,resource $context]]])
$pathname- задължителен параметър. Показва пътя до мястото, където искате да създадете директорията.
$mode- незадължителен параметър. Определя правата за достъп (http://dreamlandpoly.blogspot.com/p/files-2.html) до директорията, която ще се създава. По подразбиране стойността на този параметър е 0777. При работа с операционна система Windows, този параметър се игнорира.
$recursive- незадължителен параметър. Може да приема стойности TRUE или FALSE.
$context- незадължителен параметър.
По подразбиране функцията mkdir () създава директория, ако нейната родителска съществува. Ако искате да създадете директория, но родителската ѝ не съществува, използвайте параметъра $recursive. В този случай едновременно ще се създадат и родителската, и желаната директория.
Повече информация за функцията mkdir () можете да намерите на адрес: http://php.net/
Четене на съдържанието на директория
За да прочетем съдържанието на дадена директория, е необходимо да отворим директорията (opendir ()), да прочетем съдържанието ѝ (readdir ())и да затворим директорията (closedir ()).
Ако се налага промяна на собствеността на директорията или правата за достъп до нея, може да се приложат РНР функциите chown () и chmod ().
Синтаксисът на функцията opendir() е:
resource opendir (string $path [, resource $context])
$path- задължителен параметър, който указва пътя до директорията, която искаме да отворим.
resource opendir (string $path [, resource $context])
$path- задължителен параметър, който указва пътя до директорията, която искаме да отворим.
Синтаксисът на функцията readdir () e:
string readdir ([resource $dir_handle])
$dir_handle- задължителен параметър. Път до директорията, която преди това е отворена с opendir ().
string readdir ([resource $dir_handle])
$dir_handle- задължителен параметър. Път до директорията, която преди това е отворена с opendir ().
Синтаксисът на функцията closedir () e:
void closedir ([resource $dir_handle])
$dir_handle- задължинелен параметър. Път до директорията, която преди това е отворена с opendir ().
void closedir ([resource $dir_handle])
$dir_handle- задължинелен параметър. Път до директорията, която преди това е отворена с opendir ().
Ако се налага промяна на собствеността на директорията или правата за достъп до нея, може да се приложат РНР функциите chown () и chmod ().
Ще създадем скрипт, който при регистрация на нов потребител, ще създава директория (ако такава вече не съществува), в която ще се съхранява информацията за потребителя, получена от формата.
Преди да продължа, ми се иска да кажа нещо за Unix domain socket (https://en.wikipedia.org/wiki/Unix_domain_socket)- обмяна на данни между процеси, протичащи в една и съща операционна система. Unix domain socket поддържа надеждно (сигурно) предаване на данни. Поради тази причина е добре да се използва функцията fsockopen () при създаване на формата. Необходимо е да се валидират данните и да се криптира паролата (от съображения за сигурност). Аз това няма да го направя сега. :)
Отворете текстовия редактор и създайте нов документ. Дайте му наименование NewUser.html. Ролята на този файл е да получи информация от потребителя, която впоследствие ще бъде записана във файл на сървъра.
Въведете:
Преди да продължа, ми се иска да кажа нещо за Unix domain socket (https://en.wikipedia.org/wiki/Unix_domain_socket)- обмяна на данни между процеси, протичащи в една и съща операционна система. Unix domain socket поддържа надеждно (сигурно) предаване на данни. Поради тази причина е добре да се използва функцията fsockopen () при създаване на формата. Необходимо е да се валидират данните и да се криптира паролата (от съображения за сигурност). Аз това няма да го направя сега. :)
Отворете текстовия редактор и създайте нов документ. Дайте му наименование NewUser.html. Ролята на този файл е да получи информация от потребителя, която впоследствие ще бъде записана във файл на сървъра.
Въведете:
//NewUser.html <html> <head> <title>Форма за регистрация</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <form action= "HandleNewUser.php" method="post" target="_blank"> Име: <br/><br/><input type=text name="firstname" placeholder= "Име" required/> <br/><br/> Фамилия: <br/><br/><input type=text name="lastname" placeholder= "Фамилия" /> <br/><br/> Рожден ден:<br/><br/><input type="date" name="bday" placeholder= "Рождена дата" ><br/><br/> Телефон:<br/><br/><input type="tel" name="tel" placeholder="10-цифрено число" ><br/><br/> URL:<br/> <br/><input type=text name="url" placeholder="URL на любим сайт" /><br/><br/> Имейл адрес:<br/><br/><input type="email" name="email" placeholder="Валиден имейл адрес" ><br/><br/> Парола: <br/><br/><input type=”password” name="password" placeholder="*****" ><br/><br/> Пол: <br/><br/><input type="radio" name="sex" value="Мъж">Мъж <input type="radio" name="sex" value="Жена">Жена <input type="radio" name="sex" value="Не искам да кажа">Не искам да кажа<br/><br/> <input type=submit name="submit" formenctype="multipart/form-data" value="Напред >>"/> <input type=reset name="reset" value="Изчисти >>"/> </form> </body> </html>Съхранете файла и го качете на сървъра.
Ще създадем директория и поддиректория, в която автоматично ще се създават файлове с информация за регистрацията на всеки потребител.
Отворете текстовия редактор и създайте нов документ HandleNewUser.php. Въведете:
Отворете текстовия редактор и създайте нов документ HandleNewUser.php. Въведете:
<?php // HandleNewUser.php // Функция makeDirectory получава като аргумент името на потребителя //на базата на което ще генерира името на директорията function makeDirectory () { if (isset($_POST['submit'])) { $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $bday = $_POST['bday']; $tel = $_POST['tel']; $url = $_POST['url']; $email = $_POST['email']; $sex = $_POST['sex']; $password = $_POST['password'];
Името на директорията задаваме с променливата $dir и случайно число (ако има дублиране на стойността на променливата $firstname).
//Показва пътя до директорията registration $dir = "/opt/lampp/htdocs/phpbegin/users/registration"; //Създава директориите users и registration //Проверява дали променливата $dir е директория if( is_dir($dir) === false) { //Създава директорията и поддиректорията /users/registration mkdir($dir, 0777, true); } //Името на файла, в който ще се запише информацията $Name =$firstname . '.txt'; //Проверява дали съществува файл с име $Name if (file_exists ($Name) === TRUE){ //Ако съществува файл с такова име, с помощта на функцията rand () //се генерира нова променлива $Name $Name =rand () . $firstname . '.txt'; } else {
Името на файла, който ще съхранява информацията за потребителя, се създава с променливата $Name.
Променливата, съдържаща данните, които ще съхраняваме е $content_to_write:
Променливата, съдържаща данните, които ще съхраняваме е $content_to_write:
//Информацията за потребителя, получена от формата, //която ще се съхрани във файл $Name $content_to_write = " Име: $firstname Фамилия: $lastname Дата на раждане: $bday Телефон: $tel URL: $url Имейл адрес: $email Пол: $sex Парола: $password <hr>"; //създава файл с име $Name в директорията /users/registration $file = fopen($dir . '/' . $Name,"w"); //Записва съдържанието на $content_to_write във файл $Name fwrite($file, $content_to_write); //Затваря файл $Name fclose($file); //Извежда съдържанието на създадения файл в браузъра include $dir . '/' . $Name; } } }// Край на функцията makeDirectory() ?>
Съставете HTML заглавието на страницата и извикайте функцията, за да се изпълни:
<html> <head> <title>Работа с директории</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <?php makeDirectory (); ?> </body> </html>
Съхранете файла. Качете го на сървъра, в същата директория, в която се намира NewUser.html. Тествайте в браузъра.
Ето и съдържанието на целия файл HandleNewUser.php:
Ето и съдържанието на целия файл HandleNewUser.php:
<?php //HandleNewUser.php // Функция makeDirectory получава като аргумент името на потребителя //на базата на което ще генерира името на директорията function makeDirectory () { if (isset($_POST['submit'])) { $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $bday = $_POST['bday']; $tel = $_POST['tel']; $url = $_POST['url']; $email = $_POST['email']; $sex = $_POST['sex']; $password = $_POST['password']; //Показва пътя до директорията registration $dir = "/opt/lampp/htdocs/phpbegin/users/registration"; //Създава директориите users и registration //Проверява дали променливата $dir е директория if( is_dir($dir) === false) { //Създава директорията и поддиректорията /users/registration mkdir($dir, 0777, true); } //Името на файла, в който ще се запише информацията $Name =$firstname . '.txt'; //Проверява дали съществува файл с име $Name if (file_exists ($Name) === TRUE){ //Ако съществува файл с такова име, с помощта на функцията rand () //се генерира нова променлива $Name $Name =rand () . $firstname . '.txt'; } else { //Информацията за потребителя, получена от формата, //която ще се съхрани във файл $Name $content_to_write = " Име: $firstname Фамилия: $lastname Дата на раждане: $bday Телефон: $tel URL: $url Имейл адрес: $email Пол: $sex Парола: $password <hr>"; //Отваря/създава файл с име $Name в директорията /users/registration $file = fopen($dir . '/' . $Name,"w"); //Записва съдържанието на $content_to_write във файл $Name fwrite($file, $content_to_write); //Затваря файл $Name fclose($file); //Извежда съдържанието на създадения файл в браузъра include $dir . '/' . $Name; } } }// Край на функцията makeDirectory() ?> <html> <head> <title>Работа с директории</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <?php makeDirectory (); ?> </body> </html>
Няма коментари:
Публикуване на коментар