2016-06-15 4 views
0

フォームコンテンツを電子メールに送信してセッションに保存してから次のページに表示する際に問題があります。PHPフォームを電子メールに送信 - 次のページにコンテンツを表示

私はcontact.shtmlにフォームを用意しています。これはmail.phpに取り込み、コンテンツを送信するとthank_you.shtmlに行きます。 thank_you-pageに表示されている内容が必要です。

私のすべてのページは* .shtmlです。これはこの点で欠点ですか?

Codesnippets: mail.php

$name = $_POST['name']; 
$_SESSION['name'] = $name; 
$email = $_POST['email']; 
$_SESSION['email'] = $email; 
$phone = $_POST['phone']; 
$_SESSION['phone'] = $phone; 

thank_you:

<?php 
echo "Navn:" . "$_SESSION['name']"; 
echo "Email:" . "$_SESSION['email']"; 
echo "Telefon:" . "$_SESSION['phone']"; 
?> 

私はページthank_youとmail.phpに明らかにしています。私はより多くの私は、ファイル名や拡張子も小さなプレビューを表示したいテキストを入力しても、画像ファイルにはいくつかのを持っているこれらの数行の横に

<?php 
session_start(); 
?> 

。 何かが欠落しているか、完全な間違ったトラックにありますか?

+1

ここで '' 'を削除してください:' 'echo" Navn: "。$ _SESSION ['name'];' – Jeff

+1

そしてサーバ設定でphpとして解析される '* .shtml'を追加しましたか? – Jeff

+0

出力をフィルタリングしないとXSSの脆弱性が保証されますか?少なくとも、出力時には文字列の周りにhtmlentities()を追加してください:Ref:http://php.net/manual/en/function.htmlentities.php – swa66

答えて

0
<?php 
echo "Navn:" . htmlentities($_SESSION['name']); 
echo "Email:" . htmlentities($_SESSION['email']); 
echo "Telefon:" . htmlentities($_SESSION['phone']); 
?> 

変数の周りの引用符を削除する必要があります。適用可能なすべての文字をHTMLエンティティに変換するには、htmlentitiesを使用してください。

+0

多分いくつかの単語の説明はそれに答えるだろう – swa66

+0

追加の説明 – CiroRa

+0

来る可変部分の周りにhtmlentities()を追加する方法についてユーザーからまっすぐ... – swa66

0

セッションを使用してバイパスすることができます。有効な電子メールが掲載されている場合は、あなたがあなたのメールをトリガすることができます

<?php 
$email = null; 
$sent = false; 
$error = null; 

if($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $email = isset($_POST['email']) ? $_POST['email'] : null; 
    if($email && filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     // supplied email looks good, send email here. 
     $sent = true; 
    } else { 
     $error = 'Please enter a valid email address.'; 
    } 
} 
?> 
html goes here.. 
<?php if($sent) { 
    echo 'Thankyou. The email you supplied is: ' . htmlspecialchars($email); 
?> 
<?php } else { ?> 
    <?php echo $error ? '<p>' . $error . '</p>' : ''; ?> 
    <form method="POST"> 
     Email: 
     <input type="text" name="email" value="<?php echo htmlspecialchars($email) ?>"> 
     <input type="submit"> 
    </form> 
<?php } ?> 

:私は懸念の分離を好む一方で、次のアウトライン "オールインワンのソリューションは、あなたの問題を満足させるでしょう。

本当に収集したユーザーデータを表示する必要がありますか?

+0

はい私は、ユーザーが送信した収集データを表示したいと思います。これは、ユーザーがthank_you.shtmlより先に進むと停止するセッションに格納する必要があります。 –

+0

上記のとおり、セッションは必要ありません。 (少なくとも単純な小文字の場合)あなたは、ユーザーが感謝のページを離れたことを知る方法がありません。 – Progrock

+0

私はfileuploadを含む大きなフォームを持っています。ユーザーがあなたのページに感謝の気持ちになると、ユーザーコンテンツが表示され、セッションを停止することができると私は信じていますか? –

関連する問題