2011-03-11 63 views
0

我正在拉我的头发。我早些时候做过这个工作。

我的confirm.php检查上一页表单的变量。然后回应它们,以便观众可以确认答案。如果一切看起来不错,他们可以点击贝宝图像name="submit",它会再次通过isset,并发送mail()并更新表单动作的URL,然后将变量发布到一些JavaScript代码的PayPal,我得到了以前的帮助。

编辑: 我上传更精简代码:

form.php的页面:

<form action="test.php" method="post"> 
    Name: <input type="text" name="name" value=""/> 
    <input type="submit" name="send" value="send"/> 
</form> 

Confirm.php:

<? 
ini_set("display_errors","2"); 
ERROR_REPORTING(E_ALL); 

$url = ''; 
    if (isset($_POST['send'])) 
     { 
      $data = $_POST['name']; 
     }else{ 
      echo "SEND is not Set"; 
     } 


    if (isset($_POST['submit'])) 
     { 
      $data = $_POST['data']; 
      $my_message = ' TEST DATA:<br/><br/>Child Name'. $data .''; 
      $subject = 'Mike TEST'; 
      $headers = "From: [email protected]\r\n"; 
      $headers .= "Reply-To: [email protected]\r\n"; 
      $headers .= "Content-type: text/html\r\n"; 

      $url = "https://www.paypal.com/cgi-bin/webscr"; 

      mail("[email protected]",$my_message,$subject,$headers); 
     }else{ 
      echo "SUBMIT is not Set"; 
     } 
?> 
<html> 
<head> 
</head> 

<body> 

<form action="<? echo $url; ?>" method="post"> 
    Name: <? echo $data; ?><input type="hidden" name="data" value="<? echo $data; ?>"/><br/><br/> 
<input type="submit" value="submit" name="submit"> 
</form> 
<? 
if ($url != "") { 
?> 
<script language="javascript"> 
document.forms[0].submit(); 
</script> 
<? 
}else{ echo "URL NOT SET";} 
?> 
</body> 
</html> 
+0

我没有看到提交按钮在这种形式..如果它在另一个页面,该作品的网页,而不是这一个... – 2011-03-11 06:35:54

+0

doesnt 作为提交按钮工作吗? – Denoteone 2011-03-11 06:39:12

+0

我修正了你的格式,因为你可以清楚地看到在'mail()'之后有一个额外的'''' – xzyfer 2011-03-11 06:44:27

回答

1

当你的表单提交它$_POST设置变量为

$_POST['Submit_x'] $_POST['Submit_y'] 

这就是为什么ÿ我们的情况每次都失败。

您正在使用$_POST['submit']进行检查PHP对变量名称是区分大小写的。

+0

好的,有没有办法解决这个问题?我不知道它做到了。 – Denoteone 2011-03-11 06:44:55

-1

您提交的标签写有资本'S':

<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="Submit" alt="PayPal - The safer, easier way to pay online!"> 

但您的PHP正在检查小写“提交”。 在附加的注释,我想补充一个隐藏字段的名称提交,老年人的IE不提交一个提交按钮的值(至少不是input type="submit"不知道input type="image"虽然)

<input type="hidden" name="submitted" value="1"> 

你的PHP检查

if (intval($_POST['submitted']) > 0) 
+0

我错过了类型化的职务。对不起它在我的脚本是小写。我在页面的顶部添加回声和什么也得不到。 – Denoteone 2011-03-11 06:42:04

+1

&& @Denoteone NEVER如果您想要,可以用名称=“提交”的形式调用任何内容提交表单使用JavaScript提交() – mplungjan 2011-03-11 17:48:22

+0

真实,忘记了。相应地更改了上面的代码。 – konsolenfreddy 2011-03-11 18:35:36

1
value="<? echo $data; ?>"? 

这是不好的做法。如果$data包含双引号,则会破坏您的表单。因此,盲目输出用户提供的数据正是XSS攻击发生的原因。你应该至少有:

value="<?php echo htmlspecialchars($data) ?>"> 

这将保持你的表格完好无损。

相关问题