PHPMailer を使用して、静的 Web サイト用の添付ファイル付きのフォームを作成しました。ほぼ完璧に動作しますが、まだいくつか疑問があります。親切にお願いしたいのですが、私がよくわからないことを少し説明して、最後の部分で私を助けてくれませんか. 前もって感謝します
1)私が使用するファイルをアップロードするため
$uploaddir = './';
$uploadfile = $uploaddir . basename($_FILES['attachment']['name']);
if (move_uploaded_file($_FILES['attachment']['tmp_name'], $uploadfile)) {
echo "Success\n";
} else {
echo "Failed.\n";
しかし、私はそれを本当に理解していません。最初の行は、ファイルがアップロードされるディレクトリです。わかりました。ファイル自体の 2 回目のアップロード (最初の行で html field name="priloha" から選択したディレクトリへ) ですか? そして、私は 3 行目 (4 行目) を本当に理解していません。これは必要であり、その理由はわかりません。このコードは PHP マニュアルから取得します。 http://www.php.net/manual/en/features.fi...method.php、少し編集しただけです。4 行目 (move_uploaded_file 部分全体) を削除すると、フォームが機能しません。これでできることは、空の {} を残してエコーを削除することだけです。なんで?ファイルを移動するだけの場合、なぜ移動する必要があるのですか? ここ PHPManual でそれについて読みましたが、なぜこの関数を使用する必要があるのかわかりません。そして、どうすれば条件を残して、move_uploaded_file(...); だけにすることができますか? ?
2)もう1つは、このコードです
if(!$mail->Send()) {
echo '<script type="text/javascript">alert("Error sending form!");</script>';
}
else
{
echo '<script type="text/javascript">alert("The form has been sent!");</script>';
}
echo "string" だけを使用しましたが、フォームを送信した後、メッセージが書かれた新しいページに表示されました。どこにもリダイレクトされたくありません。メッセージがポップアップせず、フォームの上に表示されるだけでも嬉しいです。
だから私は試しました
else
{
echo '<script type="text/javascript">window.location = "./";</script>';
echo '<script type="text/javascript">alert("The form has been sent!");</script>';
}
この場合、成功に関するポップアップは表示されません。順序を入れ替えても、成功を知らせるポップアップが表示され、ポップアップで [OK] をクリックするとリダイレクトされるときに、バックグラウンドに空の Web サイトのページが存在するという問題がまだあります:/
3)最後に、アップロード後にファイルを削除します。私の方法は少し厄介なようですが、うまくいきます。これを「軽く」するにはどうすればよいでしょうか。
if ($mail->AddEmbeddedImage("$uploadfile", "attachment") !="")
{
unlink("$uploadfile");
}
お返事ありがとうございます。お時間を無駄にして申し訳ありません。私は質問せずにフォームを機能させました。ほぼ完璧にしたいだけです。このフォームを作成するのに 2 日かかりました。PHP との最初の「実際の」接触であり、私にとっては簡単ではありませんでした。以前に必要なものをすべて知っていれば、これは 1 時間で完了できることを知っているので、次回は速くするためにこれについて明確にしたいと思います。ありがとうございます