0

お問い合わせフォームがありますが、宣言したメールアドレスにメッセージが送信されません。これはsubmit.phpファイルです:

<?php

/* config start */

$emailAddress = 'xxxxxxx@hotmail.com';

/* config end */

require "../php/class.phpmailer.php";

session_name("fancyform");
session_start();


foreach($_POST as $k => $v)
{
    if(ini_get('magic_quotes_gpc'))
        $_POST[$k] = stripslashes($_POST[$k]);

    $_POST[$k] = htmlspecialchars(strip_tags($_POST[$k]));
}


$err = array();

if(!checkLen('name'))
    $err[] = 'The name field is too short or empty!';

if(!checkLen('email'))
    $err[] = 'The email field is too short or empty!';
elseif(!checkEmail($_POST['email']))
    $err[] = 'Your email is not valid!';

if(!checkLen('subject'))
    $err[] = 'You have not selected a subject!';

if(!checkLen('message'))
    $err[] = 'The message field is too short or empty!';

if((int)$_POST['captcha'] != $_SESSION['expect'])
    $err[] = 'The captcha code is wrong!';


if(count($err))
{
    if($_POST['ajax'])
    {
        echo '-1';
    }

    else if($_SERVER['HTTP_REFERER'])
    {
        $_SESSION['errStr'] = implode('<br />', $err);
        $_SESSION['post'] = $_POST;

        header('Location: '.$_SERVER['HTTP_REFERER']);
    }

    exit;
}

$msg =
'Name:  '.$_POST['name'].'<br />
Email:  '.$_POST['email'].'<br />
 IP:    '.$_SERVER['REMOTE_ADDR'].'<br /><br />

Message:<br /><br />

'.nl2br($_POST['message']).'

';

$mail = new PHPMailer();
$mail->IsMail();

$mail->AddReplyTo($_POST['email'], $_POST['name']);
$mail->AddAddress($emailAddress);
$mail->SetFrom($_POST['email'], $_POST['name']);
$mail->Subject = "A new ".mb_strtolower($_POST['subject'])." from ".$_POST['name']." | contact form feedback";

$mail->MsgHTML($msg);

$mail->Send();


unset($_SESSION['post']);

if($_POST['ajax'])
{
    echo '1';
}
else
{
    $_SESSION['sent'] = 1;

    if($_SERVER['HTTP_REFERER'])
        header('Location: '.$_SERVER['HTTP_REFERER']);

    exit;
}

function checkLen($str, $len = 2)
{
    return isset($_POST[$str]) && mb_strlen(strip_tags($_POST[$str]), "utf-8") > $len;
}

function checkEmail($str)
{
    return preg_match("/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $str);
}

?>

をブラウザで開くとsubmit.php、次のエラー メッセージが表示されます。


警告: require(../php/class.phpmailer.php) [function.require]: ストリームを開くことができませんでした: No such file or directory in /home/content/96/9227096/html/submit.php on line 10
Fatalエラー: require() [function.require]: /home/content/で必要な '../php/class.phpmailer.php' (include_path='.:/usr/local/php5_3/lib/php') を開けませんでした 96/9227096/html/submit.php 10行目

また、ホスティング サーバーから、コードに次のリレー サーバーを追加する必要があるかもしれないと言われました:(しかし、どこにあるかはわかりません)。 relay-hosting.secureserver.net

4

2 に答える 2

0

私はいくつかのホスティングプロバイダーで同様の問題に遭遇しました。パスが適切であったとしても、requireにはファイルが含まれず、スクリプト全体が終了しました。あなたはそこにあなたのファイルへの本当のパスを書くことができます、そして多分それは助けになるでしょう。この問題以来、私は使い始めました

require(getcwd().'actual/path/relevant/to/index.php');

そして、JavaやC#デスクトップアプリと同様に、1つのクラスでアプリを作成することをお勧めします。

于 2012-04-22T16:59:30.667 に答える
0

このステートメントrequire "../php/class.phpmailer.php";は、../php/class.phpmailer.phpファイルがロードされ、ロードできない場合はスクリプトが終了することを意味します。

そのスクリプトをロードできません。それには、いくつかの理由が考えられます。多分それはそこにありません。指定したパスが間違っている可能性があります。ファイルのパーミッションの問題かもしれません。その部分を把握する必要があります。

しかし、それを読み込めないため、スクリプトはエラー メッセージで終了します。

于 2012-04-22T15:08:41.040 に答える