[英]Noob Problems with PHP Script for My Form
預先感謝大家:
當我測試表單頁面時,它會為$ myname和$ email加載與前四個if / else語句相對應的錯誤“ undefined variable lines ....”。
當我將第一個endif移到腳本的底部時,未定義的變量消失了,但是當我沒有正確填寫表單時,錯誤消息不再顯示,並且“感謝您填寫表單”消息否當我這樣做時會更長
另外,當我在頂部使用第一個endif時,甚至在觸摸表格之前,都會出現錯誤消息“您的姓名必須采用以下格式:姓氏,第一個”和“您的電子郵件必須采用正確的格式”。
好的,這是我在單獨文件中擁有的表單和PHP腳本:
<?php if (isset($msg)) { echo '<div id = "thanks"/><p>', $msg , '</p></div>'; } ?>
<form id="myform" name="theform" class="group" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
<span id="firstname"> Name (Last, First):</span> <span id="firstnamefield">
<input type="text" name="myname" size="50" value:"<?php if (isset($myname)) {echo $myname;} ?>"/></span>
<?php if (isset($err_myname)) { echo '<div id = "error"/><p>', $err_myname , '</p></div>'; } ?>
<?php if (isset($err_namematch)) { echo '<div id = "namematch"/><p>', $err_namematch , '</p></div>'; } ?>
<span id="mail">Email:</span> <span id="emailfield"><input type="text" name="email" value="<?php if (isset($email)) {echo $email;} ?>"/></span>
<?php if (isset($err_email)) { echo '<div id = "emailerror"/><p>', $err_email , '</p></div>'; } ?>
<?php if (isset($err_patternmatch)) { echo '<div id = "emailmatch"/><p>', $err_patternmatch , '</p></div>'; } ?>
<span id="telephone">Phone:</span><span id="phonefield"><input type="text" name="phone" value="<?php if (isset($phone)) {echo $phone;} ?>"/></span>
<span id="sub"><input type="image" name="action" value="submit" src="images/submit.png" alt="Submit" /></span>
</form>
這就是我的PHP文件中的內容:
<?php
if (($_SERVER['REQUEST_METHOD'] == 'POST') && (!empty($_POST['action']))):
endif; //form submitted
if (isset($_POST['myname'])) { $myname = $_POST['myname']; }
if (isset($_POST['phone'])) {$phone = $_POST['phone']; }
if (isset($_POST['email'])) {$email = $_POST['email']; }
$formerrors = false;
if ($myname ===''):
$err_myname = "*Sorry, your name is a required field";
$formerrors = true;
endif; //Input Field Empty
if ($email ===''):
$err_email = "*Sorry, your email is a required field";
$formerrors = true;
endif; //Input Field Empty
if ( !(preg_match('/^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a- zA-Z]\.)+[a-zA-Z]{2,9})$/', $email)) ):
$err_patternmatch = "*Your email must be in the correct format";
$formerrors = true;
endif; //Input Must Match Proper Format
if ( !(preg_match('/[A-Za-z]+, [A-Za-z]+/', $myname))):
$err_namematch = "*Your name must be in the format: Last, First";
$formerrors =true;
endif; //Input Must Match Proper Format
if (!($formerrors)):
$to = "test1234@yahoo.com";
$subject = "From $myname --Postcard Landing Page";
$message = "You have a new lead.";
$replyto = "From: $email \r\n".
"Reply-To: donotreply@domain.com \r\n";
if (mail($to,$subject,$message)):
$msg = "Thank you for filling out the form!";
else:
$msg = "Problem sending message";
endif; // mail form data
endif; // Check for For Errors
?>
問題出在這部分:
if (isset($_POST['myname'])) { $myname = $_POST['myname']; }
if (isset($_POST['phone'])) {$phone = $_POST['phone']; }
if (isset($_POST['email'])) {$email = $_POST['email']; }
僅在設置了這些值的情況下才設置變量。 現在,在表單提交無效的情況下,代碼執行不會在if塊內進行,而是繼續進行下一部分而不設置變量。
解決方法如下。 在讀取$ _POST值之前,請在腳本開頭將所有變量初始化為'':
$myname = ''
$phone = ''
$email = ''
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.