无法将FORM数据传递给PHP文件

时间:2013-09-06 12:41:18

标签: php html forms cookies

我有这个为朋友工作,然后他改变了提供者,现在没有任何作用,从我做过的所有测试,提交按钮应该将数据传递给php文件,但是当php文件运行时它得到了什么都没有。

这是html文件中的FORM代码:

<form id="lista" action="lista.php" method="post">
<input name="cf_name" type="text" size="50" hidden="yes" class="obscure">
<input name="cf_email" type="text" size="50" hidden="yes" class="obscure">
<textarea name="cf_message" cols="45" rows="10" hidden="yes" class="obscure"></textarea>
<input type="image" name="lista" value="Enviar Lista por Email" src="imagens/lista_email.png" width="40" height="40"  onclick="this.form.elements['cf_message'].value =  lista_mail;this.form.elements['cf_name'].value = prompt('Escreva o seu nome:',      '');this.form.elements['cf_email'].value = prompt('Escreva o seu email:', '');">
<input name="submit" type="submit" value="Enviar" hidden="yes" class="obscure">
</form>

之前,当他点击提交时,弹出窗口似乎要求提供姓名和电子邮件,而php文件将获得这些值,现在没有任何内容。

这是PHP文件:

<?php
if ( isset($_POST['submit']) ) {

$smtpinfo['host'] = 'localhost';
$smtpinfo['port'] = '25';
$smtpinfo['auth'] = true;
$smtpinfo['username'] = 'xxx';
$smtpinfo['password'] = 'xxx';

$nome = $_POST['cf_name'];
$email = $_POST['cf_email'];
$mensagem = $_POST['cf_message'];

require_once "Mail.php";

$body = "Nome: ".$nome;
$body.= "\n";
$body.= nl2br($mensagem);

$headers = array ('From' => $email,
'To' => $smtpinfo["username"],
'Subject' => 'Encomenda Website');

$mail_object = Mail::factory('smtp', $smtpinfo);

$mail = $mail_object->send($smtpinfo["username"], $headers, $body);

if ( PEAR::isError($mail) ) {
echo ("<p>" . $mail->getMessage() . "</p>");
} else {
echo ('<b><font color="FFFF00">Mensagem enviada com sucesso para </b>' . $email . '<br><br></font>');
}}
?>

这个PHP在同一个站点上的联系表单上正常工作,所以没关系,问题似乎是从html表单到php的数据,因为他从未通过“IF POST提交设置”,不知道为什么,因为在到达此文件之前按下提交按钮。

有人可以帮忙吗?谢谢

3 个答案:

答案 0 :(得分:3)

在您的表单中

<input type="image" name="lista" value="Enviar Lista por Email" src="imagens/lista_email.png" width="40" height="40"  onclick="this.form.elements['cf_message'].value =  lista_mail;this.form.elements['cf_name'].value = prompt('Escreva o seu nome:',      '');this.form.elements['cf_email'].value = prompt('Escreva o seu email:', '');">
<input name="submit" type="submit" value="Enviar" hidden="yes" class="obscure">

但隐藏了提交元素,因此您只能看到name="lista"的图片。

然后在PHP中,您正在检查$_POST['submit'],但实际上当您点击要发送的图片$_POST['lista']时。

因此,这取决于想要使用的内容,提交内容或图片,还是两者兼而有之。

答案 1 :(得分:0)

您正在使用图片作为提交(而非隐藏按钮)。因此,将您的图像输入重命名为“提交”,它应该可以正常工作。

<input type="image" name="submit" value="Enviar Lista por Email" ........

如果您使用的是<input type="image" ....,则可以使用此替代提交按钮。因此,您可以删除隐藏的按钮并将图像输入重命名为“提交”。

答案 2 :(得分:0)

<script type="text/javascript">
  var lista_mail = 'super';
</script>

<form id="lista" action="lista.php" method="post">
<input name="cf_name" type="text" size="50" hidden="yes" class="obscure">
<input name="cf_email" type="text" size="50" hidden="yes" class="obscure">
<textarea name="cf_message" cols="45" rows="10" hidden="yes" class="obscure"></textarea>
<input type="submit" name="submit" value="Enviar Lista por Email" src="imagens/lista_email.png" width="40" height="40"  `enter code here`onclick="this.form.elements['cf_message'].value =  `enter code here`lista_mail;this.form.elements['cf_name'].value = prompt('Escreva o seu nome:',      '');this.form.elements['cf_email'].value = prompt('Escreva o seu email:', '');">
<input name="submit" type="submit" value="Enviar" hidden="yes" class="obscure">
</form>

如果你想提交图像提交按钮给css作为背景。我已经将type = image更改为提交,name ='lista'提交,如同在post中检查$ _post ['submit'],还有一件事是你缺少javascript参数lista_mail,确保它是预定义的,我已经在脚本标签中定义了它