Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP表单提交到self无法加载_Php_Validation_Session Variables - Fatal编程技术网

PHP表单提交到self无法加载

PHP表单提交到self无法加载,php,validation,session-variables,Php,Validation,Session Variables,我定制了一个php表单代码,添加了一个captcha,我希望它能显示表单本身的错误,而不是使用die命令将其显示到另一个页面或弹出对话框。我使用了PHP session而不是Ajax。我有以下问题 1单击submit按钮后,浏览器地址栏显示正在处理的php文件路径,但它无法在header命令后再次加载表单,只是显示一个空白屏幕。以前,它能够加载带有错误代码的表单,验证码工作得很好。我不知道出了什么问题 2奇怪的是,如果我按browser back按钮,表单将按原样加载。当我重新加载表单以重新启动

我定制了一个php表单代码,添加了一个captcha,我希望它能显示表单本身的错误,而不是使用die命令将其显示到另一个页面或弹出对话框。我使用了PHP session而不是Ajax。我有以下问题

1单击submit按钮后,浏览器地址栏显示正在处理的php文件路径,但它无法在header命令后再次加载表单,只是显示一个空白屏幕。以前,它能够加载带有错误代码的表单,验证码工作得很好。我不知道出了什么问题

2奇怪的是,如果我按browser back按钮,表单将按原样加载。当我重新加载表单以重新启动时,它开始显示错误消息,但一次只显示一条错误消息,而不是清除表单!但如果多个字段为空或填充了错误类型的字符,我希望一次显示所有错误消息。为什么表单会在刷新页面时处理数据?这不应该只在按下提交按钮时发生吗

3尽管存在加载问题,我仍然收到电子邮件,其中包含空字段

请帮忙

contactform.php代码如下所示:

<?php
session_start();
?>
<form action="php/contact.php" method="post" id="frmContact">

<h5 style="color: #ffffff;">What's your Name?</h5>
<input name="txtName" type="text" class="txbx" value="" />
<?php echo $_SESSION[lmsg_name]; ?><br />

<h5 style="color: #ffffff;">What's your Email?</h5>
<input name="txtEmail" type="text" class="txbx" value="" />
<?php echo $_SESSION[lmsg_email]; ?><br />

<h5 style="color: #ffffff;">Email Subject?</h5>
<input name="txtSubject" type="text" class="txbx" value="" />
<?php echo $_SESSION[lmsg_subject]; ?><br />

<h5 style="color: #ffffff;">Message to us</h5>
<textarea name="txtText" class="txbx era" placeholder="" ></textarea>
<?php echo $_SESSION[lmsg_text]; ?><br />

<h5 style="color: #ffffff;">Enter verification code</h5>
<img src="php/captcha.php" style="float:left; margin-left: 11px; margin-right: 10px;   margin-top: 5px;" >
<input type="text" name="vercode" class="txbxcap" />
<?php echo $_SESSION[lmsg_incode]; ?><br />

<input name="" type="submit" class="sendbtn" value="SEND MESSAGE" id="btnSend"/>

</form>
<?php
$_SESSION[lmsg_name] ='';
$_SESSION[lmsg_email] ='';
$_SESSION[lmsg_subject] ='';
$_SESSION[lmsg_text] ='';
$_SESSION[lmsg_incode] ='';
?>
<?php 
session_start(); 
$text = rand(10000,99999); 
$_SESSION["vercode"] = $text; 
$height = 38; 
$width = 55; 

$image_p = imagecreate($width, $height); 
$black = imagecolorallocate($image_p, 0, 0, 0); 
$white = imagecolorallocate($image_p, 255, 255, 255); 
$font_size = 16; 

imagestring($image_p, $font_size, 5, 5, $text, $white); 
imagejpeg($image_p, null, 80); 
?>
<?php

session_start(); 

$Name = htmlspecialchars($_POST['txtName']);
$Email = htmlspecialchars($_POST['txtEmail']);
$Subject = htmlspecialchars($_POST['txtSubject']);
$Text = htmlspecialchars($_POST['txtText']);

$string_exp = "/^[A-Za-z .'-]+$/";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';


if (empty ($Name) || !preg_match($string_exp,$Name)) { 
$error_name = '<div style="color: #e44558; float:left; margin-left: 11px;">*Please provide a name.<br /></div>';
$_SESSION[lmsg_name] = $error_name;
header('Location:http:../contactform.php');
}

elseif (empty ($Email) || !preg_match($email_exp,$Email)) { 
$error_email = '<div style="color: #e44558; float:left; margin-left: 11px;">*Please enter a valid email address.<br /></div>';
$_SESSION[lmsg_email] = $error_email;
header('Location:http:../contactform.php');
}

elseif (empty ($Subject) ||!preg_match($string_exp,$Subject)) {
$error_subject = '<div style="color: #e44558; float:left; margin-left: 11px;">*Please provide a subject.<br /></div>';
$_SESSION[lmsg_subject] = $error_subject;
header('Location:http:../contactform.php');
}

elseif (empty ($Text) ||!preg_match($string_exp,$Text)) {
$error_text = '<div style="color: #e44558; float:left; margin-left: 11px;">*Please write few words...<br /></div>';
$_SESSION[lmsg_text] = $error_text;
header('Location:http:../contactform.php');
}

elseif ($_POST["vercode"] != $_SESSION["vercode"] OR $_SESSION["vercode"]=='') { 
$error_code = '<div style="color: #e44558; float:left; margin-left: 11px;">*Incorrect verification code. Please try again.<br /></div>';
$_SESSION[lmsg_incode] = $error_code;
header('Location:http:../contactform.php');
}

else {

//create email
$email_to = "x@y.com";
$email_subject = "Visitor Query: ". $Subject;
$email_message = "Form details below.\n\n";

function clean_string($string) {
  $bad = array("content-type","bcc:","to:","cc:","href");
  return str_replace($bad,"",$string);
}

$email_message .= "Name: ".clean_string($Name)."\n";
$email_message .= "Email: ".clean_string($Email)."\n";
$email_message .= "Message: ".clean_string($Text)."\n";


// create email headers
$headers = 'From: '.$Email."\r\n".
'Reply-To: '.$Email."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);     


header('location:../contact_thnx.html');
}
?>
下面给出了captcha.php代码:

<?php
session_start();
?>
<form action="php/contact.php" method="post" id="frmContact">

<h5 style="color: #ffffff;">What's your Name?</h5>
<input name="txtName" type="text" class="txbx" value="" />
<?php echo $_SESSION[lmsg_name]; ?><br />

<h5 style="color: #ffffff;">What's your Email?</h5>
<input name="txtEmail" type="text" class="txbx" value="" />
<?php echo $_SESSION[lmsg_email]; ?><br />

<h5 style="color: #ffffff;">Email Subject?</h5>
<input name="txtSubject" type="text" class="txbx" value="" />
<?php echo $_SESSION[lmsg_subject]; ?><br />

<h5 style="color: #ffffff;">Message to us</h5>
<textarea name="txtText" class="txbx era" placeholder="" ></textarea>
<?php echo $_SESSION[lmsg_text]; ?><br />

<h5 style="color: #ffffff;">Enter verification code</h5>
<img src="php/captcha.php" style="float:left; margin-left: 11px; margin-right: 10px;   margin-top: 5px;" >
<input type="text" name="vercode" class="txbxcap" />
<?php echo $_SESSION[lmsg_incode]; ?><br />

<input name="" type="submit" class="sendbtn" value="SEND MESSAGE" id="btnSend"/>

</form>
<?php
$_SESSION[lmsg_name] ='';
$_SESSION[lmsg_email] ='';
$_SESSION[lmsg_subject] ='';
$_SESSION[lmsg_text] ='';
$_SESSION[lmsg_incode] ='';
?>
<?php 
session_start(); 
$text = rand(10000,99999); 
$_SESSION["vercode"] = $text; 
$height = 38; 
$width = 55; 

$image_p = imagecreate($width, $height); 
$black = imagecolorallocate($image_p, 0, 0, 0); 
$white = imagecolorallocate($image_p, 255, 255, 255); 
$font_size = 16; 

imagestring($image_p, $font_size, 5, 5, $text, $white); 
imagejpeg($image_p, null, 80); 
?>
<?php

session_start(); 

$Name = htmlspecialchars($_POST['txtName']);
$Email = htmlspecialchars($_POST['txtEmail']);
$Subject = htmlspecialchars($_POST['txtSubject']);
$Text = htmlspecialchars($_POST['txtText']);

$string_exp = "/^[A-Za-z .'-]+$/";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';


if (empty ($Name) || !preg_match($string_exp,$Name)) { 
$error_name = '<div style="color: #e44558; float:left; margin-left: 11px;">*Please provide a name.<br /></div>';
$_SESSION[lmsg_name] = $error_name;
header('Location:http:../contactform.php');
}

elseif (empty ($Email) || !preg_match($email_exp,$Email)) { 
$error_email = '<div style="color: #e44558; float:left; margin-left: 11px;">*Please enter a valid email address.<br /></div>';
$_SESSION[lmsg_email] = $error_email;
header('Location:http:../contactform.php');
}

elseif (empty ($Subject) ||!preg_match($string_exp,$Subject)) {
$error_subject = '<div style="color: #e44558; float:left; margin-left: 11px;">*Please provide a subject.<br /></div>';
$_SESSION[lmsg_subject] = $error_subject;
header('Location:http:../contactform.php');
}

elseif (empty ($Text) ||!preg_match($string_exp,$Text)) {
$error_text = '<div style="color: #e44558; float:left; margin-left: 11px;">*Please write few words...<br /></div>';
$_SESSION[lmsg_text] = $error_text;
header('Location:http:../contactform.php');
}

elseif ($_POST["vercode"] != $_SESSION["vercode"] OR $_SESSION["vercode"]=='') { 
$error_code = '<div style="color: #e44558; float:left; margin-left: 11px;">*Incorrect verification code. Please try again.<br /></div>';
$_SESSION[lmsg_incode] = $error_code;
header('Location:http:../contactform.php');
}

else {

//create email
$email_to = "x@y.com";
$email_subject = "Visitor Query: ". $Subject;
$email_message = "Form details below.\n\n";

function clean_string($string) {
  $bad = array("content-type","bcc:","to:","cc:","href");
  return str_replace($bad,"",$string);
}

$email_message .= "Name: ".clean_string($Name)."\n";
$email_message .= "Email: ".clean_string($Email)."\n";
$email_message .= "Message: ".clean_string($Text)."\n";


// create email headers
$headers = 'From: '.$Email."\r\n".
'Reply-To: '.$Email."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);     


header('location:../contact_thnx.html');
}
?>
下面给出了processing contact.php:

<?php
session_start();
?>
<form action="php/contact.php" method="post" id="frmContact">

<h5 style="color: #ffffff;">What's your Name?</h5>
<input name="txtName" type="text" class="txbx" value="" />
<?php echo $_SESSION[lmsg_name]; ?><br />

<h5 style="color: #ffffff;">What's your Email?</h5>
<input name="txtEmail" type="text" class="txbx" value="" />
<?php echo $_SESSION[lmsg_email]; ?><br />

<h5 style="color: #ffffff;">Email Subject?</h5>
<input name="txtSubject" type="text" class="txbx" value="" />
<?php echo $_SESSION[lmsg_subject]; ?><br />

<h5 style="color: #ffffff;">Message to us</h5>
<textarea name="txtText" class="txbx era" placeholder="" ></textarea>
<?php echo $_SESSION[lmsg_text]; ?><br />

<h5 style="color: #ffffff;">Enter verification code</h5>
<img src="php/captcha.php" style="float:left; margin-left: 11px; margin-right: 10px;   margin-top: 5px;" >
<input type="text" name="vercode" class="txbxcap" />
<?php echo $_SESSION[lmsg_incode]; ?><br />

<input name="" type="submit" class="sendbtn" value="SEND MESSAGE" id="btnSend"/>

</form>
<?php
$_SESSION[lmsg_name] ='';
$_SESSION[lmsg_email] ='';
$_SESSION[lmsg_subject] ='';
$_SESSION[lmsg_text] ='';
$_SESSION[lmsg_incode] ='';
?>
<?php 
session_start(); 
$text = rand(10000,99999); 
$_SESSION["vercode"] = $text; 
$height = 38; 
$width = 55; 

$image_p = imagecreate($width, $height); 
$black = imagecolorallocate($image_p, 0, 0, 0); 
$white = imagecolorallocate($image_p, 255, 255, 255); 
$font_size = 16; 

imagestring($image_p, $font_size, 5, 5, $text, $white); 
imagejpeg($image_p, null, 80); 
?>
<?php

session_start(); 

$Name = htmlspecialchars($_POST['txtName']);
$Email = htmlspecialchars($_POST['txtEmail']);
$Subject = htmlspecialchars($_POST['txtSubject']);
$Text = htmlspecialchars($_POST['txtText']);

$string_exp = "/^[A-Za-z .'-]+$/";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';


if (empty ($Name) || !preg_match($string_exp,$Name)) { 
$error_name = '<div style="color: #e44558; float:left; margin-left: 11px;">*Please provide a name.<br /></div>';
$_SESSION[lmsg_name] = $error_name;
header('Location:http:../contactform.php');
}

elseif (empty ($Email) || !preg_match($email_exp,$Email)) { 
$error_email = '<div style="color: #e44558; float:left; margin-left: 11px;">*Please enter a valid email address.<br /></div>';
$_SESSION[lmsg_email] = $error_email;
header('Location:http:../contactform.php');
}

elseif (empty ($Subject) ||!preg_match($string_exp,$Subject)) {
$error_subject = '<div style="color: #e44558; float:left; margin-left: 11px;">*Please provide a subject.<br /></div>';
$_SESSION[lmsg_subject] = $error_subject;
header('Location:http:../contactform.php');
}

elseif (empty ($Text) ||!preg_match($string_exp,$Text)) {
$error_text = '<div style="color: #e44558; float:left; margin-left: 11px;">*Please write few words...<br /></div>';
$_SESSION[lmsg_text] = $error_text;
header('Location:http:../contactform.php');
}

elseif ($_POST["vercode"] != $_SESSION["vercode"] OR $_SESSION["vercode"]=='') { 
$error_code = '<div style="color: #e44558; float:left; margin-left: 11px;">*Incorrect verification code. Please try again.<br /></div>';
$_SESSION[lmsg_incode] = $error_code;
header('Location:http:../contactform.php');
}

else {

//create email
$email_to = "x@y.com";
$email_subject = "Visitor Query: ". $Subject;
$email_message = "Form details below.\n\n";

function clean_string($string) {
  $bad = array("content-type","bcc:","to:","cc:","href");
  return str_replace($bad,"",$string);
}

$email_message .= "Name: ".clean_string($Name)."\n";
$email_message .= "Email: ".clean_string($Email)."\n";
$email_message .= "Message: ".clean_string($Text)."\n";


// create email headers
$headers = 'From: '.$Email."\r\n".
'Reply-To: '.$Email."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);     


header('location:../contact_thnx.html');
}
?>

提前感谢。

修复您的PHP语法错误$_会话[foo]是半非法的。PHP会礼貌地将未定义的常量foo转换为字符串“foo”,但会发出大量警告。它应该是$\u会话['foo']。你的头重定向也是可疑的。您不能将http:../作为您的url。如果你包括一个协议,那么它应该是http://servername/pathThe 真正的问题在于页眉打字错误。有效的位置标题如下:位置:[空格][路径]。另外,从可用性的角度来看,这个表单很糟糕。为什么在出现错误的第一个迹象时重定向?对于表单中的每一个错误,您都会强制用户重新执行表单一次。遗漏3个字段-被迫修复表单3次。为什么不先检查所有字段,然后在出现错误时重定向一次?不要忘记添加退出;在你的头之后;函数调用。感谢Marc B的建议。我尝试了完整的URL,但没有成功。我可能已经尝试过使用location:和path之间的空格,但我将再次研究它。关于第一次出现错误时的重定向,如何一次显示所有错误?你能给我一个提示吗?从if/elseif{}中删除头命令并将其置于另一个条件中?我知道代码是不对的,这就是为什么我张贴帮助…我搜索了这个网站,但没有使用'die'重定向找不到更好的php表单代码。谢谢