У меня есть проблема, которую я действительно не могу понять, как ее решить. У меня есть 2 разные страницы одного и того же проекта. Это позволяет пользователям создавать форму и отправлять ее на другую веб-страницу. И есть две версии, одна из которых просто запрашивает типы полей, имена и значения, а другая позволяет пользователям вводить полную форму вручную.
Так что, как сказал мой вопрос, в первом случае он работает отлично, а во втором случае возвращается на ту же страницу, и это сводит меня с ума! Я поставлю код в конце, но теперь шаги, чтобы воспроизвести ошибку. Пока это страница, размещенная бесплатно, поскольку я использую ее для целей тестирования:
- Перейти к http://saveyourself.vacau.com/form/
Поместите это в поля (на самом деле это тестовый аккаунт для этой страницы):
- Страница: http://newfutureuniversity.org/
- Метод: «Пост»
- Имя 1: «Пользователь»
- Значение 1: «Пользователь»
- Тип 1: «текст»
- Имя 2: «Пропуск»
- Значение 2: «Пароль»
- Тип 3: «Пароль»
- Имя 3: «Логин»
- Значение 3: «1»
- Тип 3: «Скрытый».
Нажмите «Показать форму», и форма будет отображена
- Теперь посмотрите исходный код страницы и скопируйте из "
<form...>
" в "</form>
"
- Перейдите на эту страницу http://saveyourself.vacau.com/form/manual/ и вставьте ее туда.
- Нажмите «Показать форму», и вы получите ТОЧНО ту же страницу, что и после шага 3 (проверьте html, он на 100% такой же, единственное изменение - это адрес, /manual/).
Теперь вот трюк. Несмотря на то, что обе страницы имеют одинаковый html, если вы нажмете кнопку «Отправить форму» после шага 3, вы попадете на новую страницу, но если вы нажмете кнопку «Отправить форму» после шага 6 (в / form / manual /) эта страница обновляется, а вставленная вами форма удаляется. Как это возможно? Насколько я знаю, здесь не задействован PHP, так как при отображении формы это просто HTML, и новая страница должна обрабатывать весь PHP. Так что, если он получает ту же форму, он должен ответить так же, верно? На второй странице не используется "$ _SERVER ['HTTP_REFERER'];" (откуда посетитель), и ничего подобного. Также есть 0 javascript. Я публикую сейчас HTML на случай, если это поможет, и некоторые из PHP (не помещать слишком много кода).
Итак, вопрос в том, Кто-нибудь имеет представление о том, почему вторая форма не работает?
Большое вам спасибо.
HTML-код (он одинаков на обеих страницах после шага 3 или 6):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Send form</title>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
</head>
<body style="background: #DDFFFF; width: 80%; height:100%; margin: 0 10% 0 10%; text-align: center;">
<h1>Send form</h1>
<form action="http://newfutureuniversity.org/" method="POST">
Web page: http://newfutureuniversity.org/<br>
Method: POST<br><br>
<table style="margin-left: auto; margin-right: auto;">
<tr>
<td style="text-align: right;">
User:</td><td><input type='text' name='User' value=''></td>
</tr>
<tr>
<td style="text-align: right;">
Pass:</td><td><input type='password' name='Pass' value=''></td>
</tr>
<tr>
<td style="text-align: right;">
Login:</td><td><input type='text' name='Login' value='1'></td>
</tr>
</table><br>
<input type="submit" value="Send form">
</form>
</body>
</html>
Упрощенный код PHP со страницы работы (http://saveyourself.vacau.com/form/):
//Header, body and others go before of this
<?php
if ($_POST['sent']==1&&empty($_POST['source'])) //If form is submited
{
$i = 1;
?>
<form action="<?php echo $_POST['page']; ?>" method="<?php echo $_POST['method']; ?>">
Web page: <?php echo $_POST['page']; ?><br>
Method: <?php echo $_POST['method']; ?><br><br>
<table style="margin-left: auto; margin-right: auto;">
<?php
while (!empty($_POST['nam'.$i]))
{ ?>
<tr>
<td style="text-align: right;">
<?php echo $_POST['nam'.$i].":</td><td><input type='".$_POST['typ'.$i]."' name='".$_POST['nam'.$i]."' value='".$_POST['val'.$i]; ?>'></td>
</tr>
<?php
$i++;
}
?>
</table><br>
<input type="submit" value="Send form">
</form>
<?php
}
elseif (!empty($_POST['source'])) //If user just wants to create a form and see the code
{
//I think this bit is irrelevant codereview, so I skipped it.
}
else //Body of the first page shown
{ ?>
<form method="post">
Web page: <input type="text" name="page">
Method to send: <select name="method"><option value="POST">Post</option><option value="GET">Get</option></select><br>
<table style="border: 1px solid #AAA; margin-left: auto; margin-right: auto;">
<tr>
<td>Number</td>
<td>Name</td>
<td>Value</td>
<td>Type</td>
</tr>
<?php for ($i = 1; $i <= 10; $i++)
{ ?>
<tr>
<td><?php echo $i; ?></td>
<td><input type="text" name="nam<?php echo $i; ?>"></td>
<td><input type="text" name="val<?php echo $i; ?>"></td>
<td>
<select name="typ<?php echo $i; ?>">
<option value="text">Text</option>
<option value="password">Password</option>
<option value="radio">Radio</option>
<option value="checkbox">Checkbox</option>
<option value="hidden">Hidden</option>
<option value="reset">Reset</option>
<option value="submit">Submit</option>
</select>
</td>
</tr>
<?php } ?>
</table><br>
Don't worry, a submit button is automatically added.<br>
<input type="hidden" name="sent" value="1">
<input type="submit" value="Show form">
<input type="submit" name="source" value="Form code">
</form><?php } ?>
</body>
</html>
Полный код PHP со страницы не работает (http://saveyourself.vacau.com/form/manual/):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Send form</title>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
</head>
<body style="background: #DDFFFF; width: 80%; height:100%; margin: 0 10% 0 10%; text-align: center;">
<h1>Send form</h1>
<?php
if ($_POST['sentbrr']==1) //If form is submited
echo stripslashes($_POST['code']);
else //First time
{ ?>
<form method="post">
Enter the code for the form manually<br>
<textarea name="code" style="width: 100%; min-height: 450px;"></textarea><br>
<input type="hidden" name="sentbrr" value="1">
<input type="submit" value="Show form">
</form>
<?php
} ?>
</body>
</html>