PHP代码适用于Chrome,但不适用于Firefox或IE
PHP code works on Chrome, but not on Firefox or IE
我哥哥有这个形式:
<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
关于"隐藏"字段的提示也无济于事。
问题出在:if ( isset($_POST['submit']) ) {
因为它是图像,而不是常规的提交按钮,所以从未设置过。(但不知何故谷歌浏览器设法让它工作)
解决方案是添加到表单:<input name="submit2" type="hidden" value="1"/>
并将 PHP 更改为:if ( isset($_POST['submit2']) ) {
这可能取决于您用于构建页面的软件。
我使用Aptana Studio,我发现如果您从菜单栏中选择运行,然后运行配置,可以在服务器对话框中指定使用基本 URL(您的服务器)
我很确定Dreamweaver也有类似的设置。
相关文章:
- html5 drawImage适用于firefox,而不是chrome
- JS适用于Firefox和Safari,但不适用于Chrome.此处'是我的网站
- 通过单击主菜单外部关闭子菜单'不适用于IE,但适用于Firefox&铬
- jQuery放大版不适用于Chrome和Safari,但适用于Firefox
- JavaScript调整iFrame大小-适用于Firefox/IE,但不适用于Chrome
- jquery脚本仅适用于firefox
- CSS/JQuery/Javascript加载图标仅适用于firefox
- jquery 2.2 serializeArray()适用于Firefox、Chrome,但不适用于IE(11)
- Ajax,Php-Postback仅适用于Firefox
- jQuery scrollTop()-仅适用于Firefox,不适用于Chrome
- AngularJS下拉菜单适用于Firefox,不适用于Chrome和Safari
- 在 javascript 中更改图像 .style 仅适用于 Firefox
- JS幻灯片适用于Firefox和chrome,但不适用于Internet Explorer
- jquery datatable oTable.$ 适用于 Firefox,但不适用于 Chrome
- 为什么这适用于Firefox,但不适用于Chrome或IE
- Javascript 适用于 Firefox 和 Chrome,但不适用于 IE
- Javascript适用于Firefox而不是IE.为什么
- 删除cookie(PHP,JS)适用于Firefox,Safari,Opera,但不适用于Chrome
- JavaScript脚本适用于Firefox,Chrome,Safari,Internet Explorer< 9,但不
- Web Audio onaudioprocess适用于Firefox,JSFiddle适用于Chrome,但不适用于Ch