【问题标题】:Can't pass FORM data to PHP file无法将 FORM 数据传递给 PHP 文件
【发布时间】:2013-09-06 21:56:28
【问题描述】:

我为一个朋友工作,然后他更改了提供程序,现在没有任何效果,从我所做的所有测试中,提交按钮应该将数据传递给 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 submit is set”,不知道为什么,因为您在到达此文件之前按下了提交按钮。

有人可以帮忙吗?谢谢

【问题讨论】:

  • 你试过转储$_POST 数组吗?另外,既然您已经更改了提供程序,您是否可以运行一个简单的 PHP 脚本并验证 PHP 是否设置正确?
  • php文件的名字还是一样的吗?我的意思还是 lista.php ?
  • 您是否尝试为表单赋予名称属性并在其名称上使用 isset?而且,为什么提交按钮有一个 hidden=true 属性?我什至不认为 hidden=true 存在!

标签: php html forms cookies


【解决方案1】:

在你的表单中

<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']

所以这只是取决于要使用什么,提交或图像或两者兼而有之。

【讨论】:

  • 也感谢您的意见。
【解决方案2】:

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

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

如果您使用&lt;input type="image" ....,则此按钮可用作替代提交按钮。因此,您可以摆脱隐藏按钮并将图像输入重命名为“提交”。

【讨论】:

  • 就这么简单,很好,感谢您的帮助,隐藏并没有影响,我成功地将它们隐藏起来。谢谢。
【解决方案3】:
<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 更改为 submit ,将 name='lista' 更改为提交,就像您在 php 中检查 $_post['submit'] 时一样,还有一件事是您缺少该 javascript 参数 lista_mail,请确保它是预定义的,我已经在脚本标签中定义了它

【讨论】:

  • 也感谢您的意见。
猜你喜欢
  • 2020-10-25
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 2020-03-21
  • 1970-01-01
  • 2018-01-18
相关资源
最近更新 更多