#php
#php
Вопрос:
Функция T_CONTINUE не запускается и выдает ошибку неопределенного индекса: city1 в строке 82, наряду с городами 2 и 3. Остальные статменты if работают, проверяя ввод от пользователя. Если пользователь забывает ввести часть формы, сначала отображаются отдельные сообщения об ошибках, а затем должно отображаться общее сообщение об ошибке, но этого не происходит.
После того, как пользователь введет всю правильную информацию и continue == true, он должен опубликовать обратно то, что он выбрал в форме.
<HTML>
<head>
<h1>Weather Wizards Registration Verification Form</h1>
<hr>
<br>
<?php //start PHP codeing
$name=
$parentName=
$email=
$phone=
$member=
$city1="";
$city2="";
$city3="";
$nameErr="";
$parentNameErr="";
$parentEmailErr="";
$parentPhoneErr="";
$memberErr="";
$errMessage ="";
$continue=true;
if ($_SERVER["REQUEST_METHOD"] == "POST"){
$name = test_input($_POST["name"]);
$parentName = test_input($_POST["parentName"]);
$email = test_input($_POST["email"]);
$phone = test_input($_POST["phone"]);
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
if ($_SERVER["REQUEST_METHOD"] == "POST") { //Name
if (empty($_POST["name"])) {
$nameErr = "You forgot to enter your name.";
$continue==false;
echo $nameErr;
} else {
$name = test_input($_POST["name"]);
}
if (empty($_POST["parentName"])) { //Parent Name
$parentNameErr = "You forgot to enter your parent or guardian’s name";
echo $parentNameErr;
$continue==false;
}else {
$parentNameErr = test_input($_POST["parentName"]);
}
if (empty($_POST["email"])) { //Email
$parentEmailErr = "You forgot to enter your parent or guardian’s email.";
echo $parentEmailErr;
$continue==false;
}else {
$parentEmailErr = test_input($_POST["email"]);
}
if (empty($_POST["phone"])) { //phone number
$parentPhoneErr = "You forgot to enter your parent or guardian’s phone";
echo $parentPhoneErr;
$continue==false;
}else {
$parentNameErr = test_input($_POST["phone"]);
}
if (empty($_POST["member"])) { //membership
$memberErr = "You forgot to enter your membership status.";
echo $memberErr;
$continue==false;
}else {
$memberErr = test_input($_POST["member"]);
}
}
T_CONTINUE();
// if ($continue) { T_CONTINUE(); }
function T_CONTINUE(){
if($continue = false){
$errMessage = "We need your name and your parent or guradians name,email,phone and your membership status to send information about our workshop. Hit the back button on the browser to try again";
echo $errMessage;
}else if ($continue =true){
if( $_POST["city1"]){
// if Charleston is selected:
echo"You are nearest to our Charleston SC location, the Holy City! Go River Dogs!";
}else if( $_POST["city2"]){
// if per Summerville is selected:
echo"You are nearest to our Summerville SC location, the Birthplace of Sweet Tea! Refreshing!";
}else if( $_POST["city3"]){
// if per Mt. Pleasant is selected:
echo"You are nearest to our Mt. Pleasant, SC location that has a historical and beachy vibe!";
}
}
}
?>
</body>
<style type="text/css">
html{
background-color: lightgray;
}
</style>
</HTML>
Комментарии:
1. Значит, функция
T_CONTINUE()
не запущена, даже несмотря на то, что она вызывается в последней строке? Включены ли у вас отчеты об ошибках, и если да, все ли выполняется без каких-либо ошибок или предупреждений?2.
T_CONTINUE()
ссылается на кучу переменных, которые никогда не задаются:$parentName
,$name
и т.д.3.
$_POST[($name)]
вероятно, должно быть$_POST['name']
4. Что такое
test_input()
?5. Но вы никогда не используете
$continue
после всех проверок проверки. Вероятно, это должно быть что-то вродеif ($continue) { T_CONTINUE(); }
Ответ №1:
Итак, есть пара проблем с тем, что у вас есть.
- Внутри
T_CONTINUE
функции вы присваиваетеfalse
значение$continue
. Вы выполняете присваивание вместо сравнения.=
против==
- Для доступа к глобальной переменной
$continue
вам нужно использовать глобальный массив, подобный$GLOBALS['continue']
. - Во время разработки включите сообщение об ошибках в
ALL
. Упрощает отладку. В этом случае это не сильно помогло бы, поскольку вы выполняли присваивание в условии, и технически это не является незаконным.
Комментарии:
1. Куда бы я добавил $ globals [‘continue’].
2. вместо
$continue