【问题标题】:PHP code works on Chrome, but not on Firefox or IEPHP 代码适用于 Chrome,但不适用于 Firefox 或 IE
【发布时间】:2013-11-10 16:59:43
【问题描述】:

我哥哥有这个表格:

<form id="lista" action="lista2.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="submit" 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="submit2" type="submit" value="Enviar" hidden="yes" class="obscure"> 

</form>

调用这个 PHP 文件:

<?php

if ( isset($_POST['submit']) ) {

// Dados de autenticacao SMTP
$smtpinfo['host'] = 'localhost';
$smtpinfo['port'] = '25';
$smtpinfo['auth'] = true;
$smtpinfo['username'] = 'xxx';
$smtpinfo['password'] = 'xxx';

// Dados recebidos do formulario
$nome = $_POST['cf_name'];
$email = $_POST['cf_email'];
$mensagem = $_POST['cf_message'];

// Inclusão de ficheiro PEAR. Certifique-se que o PEAR está activado no seu alojamento
require_once "Mail.php";

// Corpo da mensagem
$body = "Nome: ".$nome;
$body.= "\n\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.<br><br></b>Seu email: ' . $email . '<br><br></font>');
}}

?>

这基本上是发送一封包含一些选定产品、名称和电子邮件的电子邮件。

问题是它在 Chrome 上完美运行,但在 FF 或 IE 上却不行。当按下提交图片时,URL 会更改为 PHP 文件,但会显示一个空白页面。

编辑:

添加了这个:

ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1)

FF/IE 显示空白页且未发送电子邮件,Chrome 发送电子邮件并显示如下:

Strict Standards: Non-static method Mail::factory() should not be called statically in /var/www/vhosts/[site url]/httpdocs/lista2.php on line 33
Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in /usr/share/php/Mail/smtp.php , dont know if it helps

关于“隐藏”字段的提示也没有帮助。

【问题讨论】:

  • 开启错误。肯定会出现一些警告或错误。
  • 尝试用type="hidden"替换hidden="yes"
  • 为什么textarea hidden 或class="obscure"?
  • aldanux,“隐藏”替换没有任何区别:(

标签: javascript php html forms email


【解决方案1】:

问题出在:if ( isset($_POST['submit']) ) {

因为它是一个图像,而不是常规的提交按钮,所以它从未设置过。 (但不知何故,谷歌浏览器设法让它工作)

解决方案是添加到表单中:&lt;input name="submit2" type="hidden" value="1"/&gt;

并将 PHP 更改为:if ( isset($_POST['submit2']) ) {

【讨论】:

    【解决方案2】:

    这可能取决于您用于构建页面的软件。

    我使用 Aptana Studio,发现如果从菜单栏中选择运行, 然后运行配置,您可以在服务器对话框中指定 使用基本网址(您的服务器)

    我很确定 Dreamweaver 也有类似的设置。

    【讨论】:

      猜你喜欢
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多