2011-07-11 15 views
0

真剣に。私のホスティング会社は、私のPHPコードに何か問題があると言います。私はそれらから何かエラーを取得していない、彼らは私のCSSではないと言います。助けてください。ここに私のコードに何か問題がありますか? PHPメール()

<?php 

/* Subject and Email Variables */ 

    $emailSubject = 'Bookem danno!'; 
    $webMaster = '[email protected]'; 

/* Gathering Data Variables */ 

    $nameField = $_POST['name']; 
    $cellField = $_POST['cell']; 
    $emailField = $_POST['email']; 
    $dateField = $_POST['date']; 
    $timeField = $_POST['time']; 
    $lengthField = $_POST['length']; 
    $inoutField = $_POST['inout']; 
    $seenbeforeField = $_POST['seenbefore']; 
    $detailsField = $_POST['details']; 
    $p411Field = $_POST['p411']; 
    $datecheckField = $_POST['datecheck']; 
    $tobField = $_POST['tob']; 
    $terField = $_POST['ter']; 
    $otherField = $_POST['other']; 
    $screennameField = $_POST['screenname']; 
    $companyField = $_POST['company']; 
    $worknoField = $_POST['workno']; 
    $switchboardnoField = $_POST['switchboardno']; 
    $memoField = $_POST['memo']; 
    $subscribeField = $_POST['subscribe']; 

    $body = <<<EOD 
<br><hr><br> 
Name: $name <br> 
Cellphone: $cell <br> 
Email: $email <br> 
Date: $date <br> 
Time: $time <br> 
Length of appointment: $length <br> 
Incall Outcall: $inout <br> 
Have I seen you before: $seenbefore <br> 
Details: $details <br> 
P411: $p411 <br> 
Datecheck: $datecheck <br> 
TOB: $tob <br> 
TER: $ter <br> 
Other: $other <br> 
Screen Name: $screenname <br> 
Company: $company <br> 
Direct Line: $workno <br> 
Switchboard: $switchboardno <br> 
Memo: $memo <br> 
Subscribe Me: $subscribe <br> 
EOD; 

    $headers = "From: $email\r\n"; 
    $headers .= "Content-type: text/html\r\n"; 
    $success = mail($webMaster, $emailSubject, $body, $headers); 

echo "$result"; 


?> 
+2

...問題は何ですか? –

+2

これはおそらく問題ではありませんが、あなたは '$ result'を設定していないことを知っていますよね?それはおそらくあなたが何の出力も得られていない理由です。 – rockerest

+0

私は実際にやっています - それはhtmlで表示されていないだけで、画像が含まれています。スタック/オーバーフローは私にそれを投稿させません。 – Chickpea

答えて

1

Ahem。インスタンス化した変数は使用していません。

$emailField = $_POST['email']; 

そして、あなたはこの言う:たとえば、最初にあなたがこれを言う

$headers = "From: $email\r\n"; 

$emailと呼ばれる全く変化はありません。 $emailFieldと呼ばれるものがありますが、あなたはそれを使用していません。実際、$_POSTの変数はすべて、最後に "Field"という名前に変更されています。その後、Fieldの部分がなくても後でそれらを参照しようとしています。動作しません。

また、そのコードにセキュリティ上の脆弱性が存在します。 Look:

$headers = "From: $email\r\n"; 

あなたは、$ emailが安全な値であると仮定しています。誰かが自分のフォームに記入して、自分のメールアドレスが[email protected]\r\nBcc: [email protected], [email protected], etc...であることを伝えると、メールサーバーは数百または数千のメールを送信します。

スパム送信者は、独自の電子メールサーバーを維持することなく、スパムを送信する可能性があります。

あなたのドメインがスパマーとしてブラックリストに登録されているのを見るために退屈で悪意のある人がいるかもしれません。

倫理に反する企業のライバルは、あなたのビジネスを牽引するために、あなたの注文手続きにサルレンチを投じることがあります。私は

が自分に好意を行い、これを試してみてください...良い想像力で呪われています:誰もあなたに自分自身のヘッダーを挿入できないように、任意の潜在的なCR/LFペアを取り除きます

$email = str_replace("\r\n", '', $_POST['email']); 

Eメール。

+0

ありがとうございます。検証の制限が30文字に設定されていても、これは起こりますか? – Chickpea

+0

30文字に制限すると難しくなりますが、その可能性は排除されません。実際に長いヘッダーを1つ送信する代わりに、別のCCアドレスを使用するたびにフォームを繰り返し送信するスクリプトを作成できます。'\ r \ n'をユーザーが入力した余分なヘッダーパラメーターで終わる可能性のあるデータから除去する方がよいでしょう。 –

+0

よろしくお願いいたします。だから、この文字列をヘッダーセクションに入れますか? – Chickpea

0

$ headers。= "コンテンツタイプ:text/html; charset = iso-8859-1 \ r \ n"; これをあなたの既存のヘッダーに置き換えてください。私はわかりませんが、あなたを助けるかもしれません...

1

決して定義しないいくつかの変数を喜んで使用しています。これは、PHPコードを記述している間に、エラー報告が通知を隠すように設定されている(またはすべてのエラーメッセージを隠すように設定されている)ことを意味します。あなたの問題が何であれ(あなたは実際には言っていません)、PHPにあなたに通知しないように指示しています。これを読む:http://es2.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting

関連する問題