Jump to content
  • 0

Сценарий, обрабатывающий данные из формы


i.marik.i
 Share

Question

Всем добрый день! Я сделал сценарий PHP по книге, который обрабатывает данные из формы. Не могу понять как нужно заменить все переменные на $_GET['имя_переменной'] вместо $имя_переменной, чтобы заработал сценарий. Или может быть ещё есть ошибки в самом коду? Вот код:

<?php
if ($name!=""&&$login!=""&&pass!="")
{
echo "<html> <head> <title>Регистрация успешно завершена</title> </head> <body> <h1 align=\"center\">";
echo "Вы успешно зарегистрированы на нашем сайте</h1><h2>Ваши данные:</h2> <hr> <b>Время регистрации:</b> ";
echo date ("D.m.Y H:i:s");
echo "<br> <b>ФИО:</b> $name";
echo "<br> <b>Пол:</b> ";
if ($sex="male") echo "Мужской<br>";
else echo "Женский <br>";
echo "<b>Дата рождения:</b>";
$birthday=$b_day." ".$b_month." ".$b_year;
echo "$birthday <br> <hr> <b>Логин:</b>";
echo "$login <br> <b>Пароль:</b>";
$starpass="";
for ($i=0;$i<strlen($pass);$i++) $starpass=$starpass."*";
echo "$starpass <br> <b>Адрес email:</b>";
echo "$email <br> <b>Показ адреса e-mail другим пользователям сайта:</b> ";
if(isset($show_mail)) echo "Да";
else echo "Нет";
echo "<br> <hr> <b>Увлечения:</b> ";
for ($i=0;$i<count($hobbies);$i++)
{
if ($i>0) echo ", ";
echo "$hobbies[$i]";
echo ".<br> <b>Дополнительная информация:</b>";
echo "$dop <br><hr> В дальнейшем вы сможете изменить ваши регистрационные данные, щёлкнув мышью на кнопке ";
echo "<b>Профиль</b>, главного меню сайта. А сейчас, перейдите на <a href=\"index.html\">главную странницу</a>";
echo "</body></html>";
}
else
{
if ($name=="")
{
echo "<html> <head> <title>Регистрация не выполнена</title> </head> <body>";
echo "<div align=\"center\"> Не введено ФИО. Щёлкните на ссылке \"Ввести данные\", чтобы заполнить форму снова. </div><hr>";
echo "<div align=\"center\"><a href=\"register.html\">Ввести данные</a></div></body></html>";
}
else
{
echo "<html> <head> <title>Регистрация не выполнена</title> </head> <body>";
echo "<div align=\"center\"> Не введены логин или пароль. Щёлкните на ссылке \"Ввести данные\", чтобы заполнить форму снова. </div><hr>";
echo "<div align=\"center\"><a href=\"register.html\">Ввести данные</a></div></body></html>";
}
}
?>

Edited by i.marik.i
Link to comment
Share on other sites

Recommended Posts

  • 0

Очень плохая книжка. Выкинь(!)

Кроме того что код кишит ошибками, так ещё и реализация "именно так как не нужно делать"

ну и напоследок, чтобы знать что менять на $_GET как минимум нужно видеть форму отправки сообщения

  • Like 1
Link to comment
Share on other sites

  • 0

Вот HTML код:

<html>
<head>
<title>Форма для ввода данных о пользователе</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="ru">
</head>
<body>
<form action="add_user.php" method="get">
<h2>Регистрация нового пользователя</h2>
<hr>
<b>ФИО: </b> <input type="text" name="name" size="40" maxlength="70"><br>
<b>Пол: </b>Мужской <input type="radio" name="sex" value="male" checked>Женский<input type="radio" name="sex" value="female"><br>
<b>Дата рождения: </b> День <input type="text" name="b_day" size="2" maxlength="2">
Месяц <select name="b_month" size="1">
<option value="Январь" SELECTED>Январь</option>
<option value="Февраль">Февраль</option>
<option value="Март">Март</option>
<option value="Апрель">Апрель</option>
<option value="Май">Май</option>
<option value="Июнь">Июнь</option>
<option value="Июль">Июль</option>
<option value="Август">Август</option>
<option value="Сентябрт">Сентябрь</option>
<option value="Октябрь">Октябрь</option>
<option value="Ноябрь">Ноябрь</option>
<option value="Декабрь">Декабрь</option>
</select>
Год <input type="text" name="b_year" value="1980" size="4" maxlength="4">
<hr>
<b>Логин:</b> <input type="text" name="login" size="10" maxlength="10"> <b>Пароль:</b> <input type="password" name="pass" size="10" maxlenght="10"><br>
<b>Адрес e-mail:</b> <input type="text" name="email" size="15" maxlenght="40">
<input type="checkbox" name="show_mail" value="show"> Показывать e-mail другим пользователям сайта <br>
<hr>
<b>Увлечения:</b><br>    <select name="hobbies[]" size="4" multiple>
<option value="Спорт" >Спорт</option>
<option value="Музыка" >Музыка</option>
<option value="Путешествия" >Путешествия</option>
<option value="Кино" >Кино</option>
<option value="Фотография" >Фотография</option>
<option value="Компьютерные игры" >Компьютерные игры</option>
<option value="Настольные игры" >Настольные игры</option>
<option value="Азартные игры" >Азартные игры</option>
<option value="Рисование" >Рисование</option>
<option value="Хоровое пение" >Хоровое пение</option>
</select><br><br>
<b>Дополнительная информация:</b> <br>   <textarea cols="40" rows="8" name="dop"></textarea><br>
<hr>
<input type="submit" value="Зарегистрировать"> <input type="reset" name="Reset" value="Отменить ввод">
</form>
</body>
</html>

Link to comment
Share on other sites

  • 0

у тебя вернётся

$_GET['name'] - ФИО

$_GET['sex'] - Пол

$_GET['b_day'] - дата рождения

$_GET['b_month'] - месяц

$_GET['b_year'] - код

$_GET['login'] - Логин

$_GET['pass'] - Пароль

$_GET['email'] - Мыло

$_GET['show_mail'] - показывать мыло?

$_GET['hobbies'] - Увлечения

$_GET['dop'] - дополнительная информация

Но вообще-то такие вещи лучше пересылать методом POST

кстати, ты можешь не менять переменные, а сделать проверку GET (это вообще-то нужно делать в любом случае), например так

$name = isset($_GET['name']) ? $_GET['name'] : 'имени нет';
$login = isset($_GET['login']) $_GET['login'] : '';
$pass= isset($_GET['pass']) ? $_GET['pass'] : '';

или более серьёзно

$name = isset($_GET['name']) ? strip_tags(trim($_GET['name'])) : 'имени нет';
$login = isset($_GET['login']) ? strip_tags(trim($_GET['login'])) : '';
$pass= isset($_GET['pass']) ? strip_tags(trim($_GET['pass'])) : '';

вставь это перед кодом

Link to comment
Share on other sites

  • 0

Нужно было так сделать?

<?php
$_GET['name'] - $name;
$_GET['sex'] - $sex;
$_GET['b_day'] - $b_day;
$_GET['b_month'] - $b_month;
$_GET['b_year'] - $b_year;
$_GET['login'] - $login;
$_GET['pass'] - $pass;
$_GET['email'] - $email;
$_GET['show_mail'] - $show_mail;
$_GET['hobbies'] - $hobbies;
$_GET['dop'] - $dop;
...

У меня почему-то не срабатывает

Link to comment
Share on other sites

  • 0

тебе нужно найти другую книжку где примеры проще. Если ты начал изучать это, то нужно начинать с азов. Этот пример слишком сложен, да ещё и написан ужасно запутано.

если будет время завтра напишу примерчик

Link to comment
Share on other sites

  • 0

вот твой пример

файл вывода формы register.html

<!DOCTYPE html>
<html>
<head>
<title>Форма для ввода данных о пользователе</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="ru">
</head>
<body>
<form action="add_user.php" method="get">
<h2>Регистрация нового пользователя</h2>
<hr>
<b>ФИО: </b> <input type="text" name="name" size="40" maxlength="70"><br>
<b>Пол: </b>Мужской <input type="radio" name="sex" value="male" checked>Женский<input type="radio" name="sex" value="female"><br>
<b>Дата рождения: </b> День <input type="text" name="b_day" size="2" maxlength="2">
Месяц
<select name="b_month" size="1">
<option value="Январь" SELECTED>Январь</option>
<option value="Февраль">Февраль</option>
<option value="Март">Март</option>
<option value="Апрель">Апрель</option>
<option value="Май">Май</option>
<option value="Июнь">Июнь</option>
<option value="Июль">Июль</option>
<option value="Август">Август</option>
<option value="Сентябрт">Сентябрь</option>
<option value="Октябрь">Октябрь</option>
<option value="Ноябрь">Ноябрь</option>
<option value="Декабрь">Декабрь</option>
</select>
Год <input type="text" name="b_year" value="1980" size="4" maxlength="4">
<hr>
<b>Логин:</b> <input type="text" name="login" size="10" maxlength="10"> <b>Пароль:</b> <input type="password" name="pass" size="10" maxlenght="10"><br>
<b>Адрес e-mail:</b> <input type="text" name="email" size="15" maxlenght="40">
<input type="checkbox" name="show_mail" value="show"> Показывать e-mail другим пользователям сайта <br>
<hr>
<b>Увлечения:</b><br>    
<select name="hobbies[]" size="4" multiple>
<option value="Спорт">Спорт</option>
<option value="Музыка">Музыка</option>
<option value="Путешествия">Путешествия</option>
<option value="Кино">Кино</option>
<option value="Фотография">Фотография</option>
<option value="Компьютерные игры">Компьютерные игры</option>
<option value="Настольные игры">Настольные игры</option>
<option value="Азартные игры">Азартные игры</option>
<option value="Рисование">Рисование</option>
<option value="Хоровое пение">Хоровое пение</option>
</select>
<br><br>
<b>Дополнительная информация:</b> <br>   <textarea cols="40" rows="8" name="dop"></textarea><br>
<hr>
<input type="submit" value="Зарегистрировать"> <input type="reset" name="Reset" value="Отменить ввод">
</form>
</body>
</html>

файл проверки формы add_user.php

<?php
// получаем переменные из глобальной переменной GET

/**
* получаем имя:
* - если переменная $_GET['name'] существует то присваиваем переменной глобальное значение.
* и удаляем из имени пробелы сначала и с конца, а также html и php тэги
* - если переменной не существует, то присваиваем переменной пустое значение
*/
$name = isset($_GET['name']) ? strip_tags(trim($_GET['name'])) : '';

// делаем аналогичную проверку с другими переменными
$login = isset($_GET['login']) ? strip_tags(trim($_GET['login'])) : '';
$pass = isset($_GET['pass']) ? strip_tags(trim($_GET['pass'])) : '';
$sex = isset($_GET['sex']) ? $_GET['sex'] : 0;
$b_day = isset($_GET['b_day']) ? strip_tags(trim($_GET['b_day'])) : '';
$b_month = isset($_GET['"b_month']) ? strip_tags(trim($_GET['"b_month'])) : '';
$b_year = isset($_GET['b_year']) ? strip_tags(trim($_GET['b_year'])) : '';
$email = isset($_GET['email']) ? strip_tags(trim($_GET['email'])) : '';
$dop = isset($_GET['dop']) ? strip_tags(trim($_GET['dop'])) : '';
$show_mail = isset($_GET['show_mail']) ? strip_tags(trim($_GET['show_mail'])) : 0;
$hobbies = isset($_GET['hobbies']) ? $_GET['hobbies'] : '';

// проверяем что имя, пароль или логин не равны пустому значению
if ($name != "" && $login != "" && $pass != "") { // если имя, пароль или логин не пустые
echo '<html> <head> <title>Регистрация успешно завершена</title> </head> <body> <h1 align="center">';
echo 'Вы успешно зарегистрированы на нашем сайте</h1><h2>Ваши данные:</h2> <hr> <b>Время регистрации:</b> ';
echo date("D.m.Y H:i:s");

// выводим имя
echo '<br> <b>ФИО:</b> ' . $name;
echo "<br> <b>Пол:</b> ";

// выводим пол
if ($sex == "male") { // если мужской
echo "Мужской<br>";
} else { // если женский
echo "Женский <br>";
}
echo "<b>Дата рождения:</b>";

// присваиваем переменной значение даты
$birthday = $b_day . " " . $b_month . " " . $b_year;

// выводим дату
echo $birthday . " <br> <hr> <b>Логин:</b>";

// выводим логин
echo $login . " <br> <b>Пароль:</b>";

// создаём звёздочки для пароля
$starpass = "";
for ($i = 0; $i < strlen($pass); $i++) {
$starpass = $starpass . "*";
}

// выводим звёздочки
echo $starpass . " <br> <b>Адрес email:</b>";

// выводим мыло
echo $email . " <br> <b>Показ адреса e-mail другим пользователям сайта:</b> ";

// выводим показывать или нет мыло
if ($show_mail) { // если выбрано
echo "Да";
} else { // если не выбрано
echo "Нет";
}
echo "<br> <hr> <b>Увлечения:</b> ";

// вывод список Увлечений
for ($i = 0; $i < count($hobbies); $i++) {
// если $i больше 0 (увлечений больше одного), то добавляем запятую
if ($i > 0) {
echo ", ";
}
// выводим увлечение
echo $hobbies[$i];
}
echo ".<br> <b>Дополнительная информация:</b>";

// выводим дополнительную информацию
echo $dop . " <br><hr> В дальнейшем вы сможете изменить ваши регистрационные данные, щёлкнув мышью на кнопке ";
echo '<b>Профиль</b>, главного меню сайта. А сейчас, перейдите на <a href="index.html">главную странницу</a>';
echo "</body></html>";
} else { // если имя, пароль или логин пустое
if ($name == "") { // если имя не введено
echo "<html> <head> <title>Регистрация не выполнена</title> </head> <body>";
echo '<div align="center"> Не введено ФИО. Щёлкните на ссылке «Ввести данные», чтобы заполнить форму снова. </div><hr>';
echo '<div align="center"><a href="register.html">Ввести данные</a></div></body></html>';
} else { // если имя введено
echo "<html> <head> <title>Регистрация не выполнена</title> </head> <body>";
echo '<div align="center"> Не введены логин или пароль. Щёлкните на ссылке «Ввести данные», чтобы заполнить форму снова. </div><hr>';
echo '<div align="center"><a href="register.html">Ввести данные</a></div></body></html>';
}
}
?>

Edited by Gold Dragon
Link to comment
Share on other sites

  • 0

Спасибо за помощь! Только вот, опять не хочет показывать результат. Может быть, у меня не так настроен сервер? Вроде бы у меня простые примеры показывает нормально.

Link to comment
Share on other sites

  • 0

Да, именно так прописал файлы.

Тут наверно есть ошибка, пропущен "$":

if ($name != "" && $login != "" && pass != "") { // если имя, пароль или логин не пустые

Надо так переписать:

if ($name != "" && $login != "" && $pass != "") { // если имя, пароль или логин не пустые

Edited by i.marik.i
Link to comment
Share on other sites

  • 0

Я ввожу http://localhost/register.html , печатаю данные в формах и нажимаю на "Зарегистрировать". Получаю вот такое на странице:

0) { echo ", "; } // выводим увлечение echo $hobbies[$i]; } echo ".

Дополнительная информация:"; // выводим дополнительную информацию echo $dop . "

——————————————————————————--

В дальнейшем вы сможете изменить ваши регистрационные данные, щёлкнув мышью на кнопке "; echo 'Профиль, главного меню сайта. А сейчас, перейдите на главную странницу'; echo ""; } else { // если имя, пароль или логин пустое if ($name == "") { // если имя не введено echo " "; echo '...

Link to comment
Share on other sites

  • 0

странный адрес у тебя...

да вроде обычный локалхост, что странного?

странный php и учебник у ТС, это да...

Попробуйте другие учебники. Перебирайте пока не поймёте, что вас прёт и получается продвигать по главам с удовольствие, я так выбираю учебники.

Если после 20 книг чуда не произойдёт, бросайте это дело на фиг, ищите другое, что ближе.

Link to comment
Share on other sites

  • 0

Я ввожу http://localhost/register.html , печатаю данные в формах и нажимаю на "Зарегистрировать". Получаю вот такое на странице:

0) { echo ", "; } // выводим увлечение echo $hobbies[$i]; } echo ".

Дополнительная информация:"; // выводим дополнительную информацию echo $dop . "

——————————————————————————--

В дальнейшем вы сможете изменить ваши регистрационные данные, щёлкнув мышью на кнопке "; echo 'Профиль, главного меню сайта. А сейчас, перейдите на главную странницу'; echo ""; } else { // если имя, пароль или логин пустое if ($name == "") { // если имя не введено echo " "; echo '...

У вас нет php, он не работает, либо не подключён.

Link to comment
Share on other sites

  • 0

У вас нет php, он не работает, либо не подключён.

PHP у меня подключен. Я проверял другие обычные скрипты и сервер правильно отображал страницу.

Может быть, у меня не полностью настроен PHP?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy