PHP Emailerリダイレクトが検証エラーのために機能しない

さて、このコードが機能していて何らかの理由で停止してしまったので少し混乱しています。それが動作を停止したときには分かりませんが、このサイトの誰かが私のためにそれを作成し、それが動作したときには完璧でした。人は私のmailer.php、リダイレクトページ、およびhtmlコードを1つのすばらしいページにまとめました。成功したページが送信されましたが、間違った認証コードエラーが自発的に機能しなくなりました(?)。

ここにコードです:

 <?php
$state = 0;
// check to see if verificaton code was correct
if(md5($verif_box).'a4xn' == $_COOKIE['tntcon']){
// if verification code was correct send the message and show this page
mail("[email protected]", 'Website Inquiry '.$subject, "\n\n".'Name: '.$name."\n\n".'Company: '.$company."\n\n".'Phone Number: '.$phone."\n\n".'Contact Me By: '.$ContactMethod."\n\n".'City: '.$city."\n\n".'I am Interested In: '.$InterestedIn."\n\n".'Comments: '.$comments."\n\n".$from."\n\n".$_SERVER['REMOTE_ADDR'], "From: $email");
// delete the cookie so it cannot sent again by refreshing this page
setcookie('tntcon','');
$state = 2;
} else if(isset($message) and $message!=""){
// if verification code was incorrect then return to contact page and show error
$state = 1;
}

if ($state == 0) {  ?>

<form action="" method="post" name="form1" id="form1" onsubmit="MM_validateForm('email','','RisEmail','name','','R','verif_box','','R','comments','','R');return document.MM_returnValue">

お問い合わせフォーム

下記のフォームに記入し、営業チームの担当者にお問い合わせください

  
Tell us what you're interested in:

<input type="radio" name="InterestedIn" value="BIBS<?php echo $_GET['InterestedIn'];?>"> Blow-In-Blanket System <input type="radio" name="InterestedIn" value="Spray Foam<?php echo $_GET['InterestedIn'];?>"> Soya Spray Foam <input type="radio" name="InterestedIn" value="Attic Insulation<?php echo $_GET['InterestedIn'];?>"> Attic Insulation <input type="radio" name="InterestedIn" value="Not Sure<?php echo $_GET['InterestedIn'];?>" checked="checked"> Not Sure

Enter additional comments* in the space provided below:

Tell us how to get in touch with you:
<table> <tr> <td>Name*</td> <td> <input type="text" size="40" maxlength="256" name="name" id="name" value="<?php echo $_GET['name'];?>"></td> </tr> <tr> <td>Company</td> <td> <input type="text" size="40" maxlength="256" name="company" value="<?php echo $_GET['company'];?>"></td> </tr> <tr> <td>Email*</td> <td><input type="text" size="40" maxlength="256" name="email" id="email" value="<?php echo $_GET['email'];?>"></td> </tr> <tr> <td>Phone</td> <td><input type="text" size="40" maxlength="256" name="phone" value="<?php echo $_GET['phone'];?>"></td> </tr> <tr> <td>City</td> <td><input type="text" size="40" maxlength="256" name="city" value="<?php echo $_GET['city'];?>"></td> </tr> </table>
    
Best method to get in touch with you:
<input type="radio" name="ContactMethod" value="telephone<?php echo $_GET['InterestedIn'];?>" checked="checked"> Phone <input type="radio" name="ContactMethod" value="email<?php echo $_GET['InterestedIn'];?>"> Email

" alt="verification image, type it in the box" width="50" height="24" align="top" />  

Enter Verification Image

<input type="submit" class="button primary" value="Submit Form" name="submit"/> <input type="reset" class="button primary" value="Clear Form" name"clear" />

/ htmlタグの後のページの一番下に表示されます。

<?php } else if ($state == 1) { ?>
    

Error

  
Wrong Verification Code Entered - Go back and try again <?php } else if ($state == 2) { ?>

残りのhtmlはここに...成功したページが提出され、その後phpタグが閉じます。

それがなぜ機能しなくなったのか?これを現在のコードで修正する方法はありますか?そうでない場合は、フォームのユーザーに間違った確認コードを送信したことを伝えるための方法が必要です。現在、間違ったコードを入力すると、現在のページが更新されます。

どんな助けでも大歓迎です。私はPHPに精通していないので、lamens用語を使用してください!

Javascript:

<script type="text/JavaScript">
<!--
function MM_findObj(n, d) { //v4.01
var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
  if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
    if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
  } else if (test!='R') { num = parseFloat(val);
    if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
    if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
      min=test.substring(8,p); max=test.substring(p+1);
      if (num

Verificationimage.phpファイルコード:

<?php
// ----------------------------------------- 
//  The Web Help .com
// ----------------------------------------- 

header('Content-type: image/jpeg');

$width = 50;
$height = 24;

$my_image = imagecreatetruecolor($width, $height);

imagefill($my_image, 0, 0, 0xFFFFFF);

// add noise
for ($c = 0; $c < 40; $c++){
$x = rand(0,$width-1);
$y = rand(0,$height-1);
imagesetpixel($my_image, $x, $y, 0x000000);
}

$x = rand(1,10);
$y = rand(1,10);

$rand_string = rand(1000,9999);
imagestring($my_image, 5, $x, $y, $rand_string, 0x000000);

setcookie('tntcon',(md5($rand_string).'a4xn'));

imagejpeg($my_image);
imagedestroy($my_image);
?>
0
追加された 編集された
ビュー: 2
一度にファイル全体を投稿しますか?私は物事が欠落しているかどうか、またはちょうど省略されているか分からないこのファイルは他のファイルに含まれていますか、それともこのファイルですか?
追加された 著者 Dunning-Kruger,
誰かが私を助けることができるなら、私はまだこれについて助けが必要ですか?間違った認証コードを入力すると、ユーザーにエラーメッセージを表示する機能がまだありません。それ以外のすべては、想定されているとおりに動作します。助けて???
追加された 著者 Leah,
@OhCan - ここに行く(
追加された 著者 Leah,
@OhCan - 私は別々に1つのインスタンスで再投稿します - 分を教えてください。私はここにリンクを掲示します。
追加された 著者 Leah,
@Patrick - 元の投稿の最後にファイルコードを追加しました。
追加された 著者 Leah,
@patrick - img srcによって呼び出されたverifyimage.phpファイルがありますが、画像ファイルであると思って投稿に含めません。あなたもそれを見る必要がありますか?あるいは、私の最後のコメントはもっと簡単でしょうか?
追加された 著者 Leah,
@patrick - 間違った認証コードが入力されたときにこのページがエラーメッセージを呼び出す方法を削除したい場合、間違ったコードを入力した人に通知するメッセージボックスをポストするだけです(現在必要な検証フィールド)、あなたは私がそれを達成するのを手伝ってくれますか?
追加された 著者 Leah,
@パトリック - 私は今すぐjavascriptを表示するために投稿を編集しました。それが役に立ったら教えてください。それが働いていた時から何も変わっていない。
追加された 著者 Leah,
@パトリック - あなたが正しいかもしれない。これは役に立ちますか?
追加された 著者 Leah,
@patrick - フォームは必要なフィールドを正しく検証し、すべてが正常に検証されたときに成功したページを表示し、検証からの情報が欠落しているというメッセージが表示された場合、検証ボックスに入力します。私は彼が私にjavascriptを与えたかどうか確認するつもりです - それは可能ですが、私は思い出しません。
追加された 著者 Leah,
@パトリック - 私はコードの残りの部分を入れます - それは重要だとは思わなかった。
追加された 著者 Leah,
あなたは、検証画像PHPファイルのコードを投稿できますか?
追加された 著者 Patrick,
まだコードが抜けているようです。より多くのコードを提供できますか?
追加された 著者 Patrick,
いいえ、そこにはありません。おそらく、あなたが認証コードに使用しているサービスは、そのCookieを設定するものです。また、$ verif_boxがどこに定義されているのかも表示されていません。確認コードを提供しているどこかのPHPコードが必要です。
追加された 著者 Patrick,
これが真である場合にのみメールを送信します: "md5($ verif_box)。 'a4xn' == $ _COOKIE ['tntcon']"。あなたが投稿したものは、そのクッキーが設定されていることを示していません。何が変わったのか分かりませんが、それはこのパズルの欠けている部分です。私の推測では、MM_validateForm関数はすべてが有効であればそれを設定するということです。
追加された 著者 Patrick,
私はtntconのクッキーがどこに設定されているのかを見たいと思っていますが、それを見ません。 Javascriptもありますか? MM_validateForm関数は、フォームの送信時に呼び出される必要があります。
追加された 著者 Patrick,

1 答え

検証画像ファイルは大きな欠落部分でした。それがクッキーが設定されている場所です。おそらく、スクリプトの一番上にある1行のコードが間違って削除されてしまったため、問題が発生しているようです。それがちょうどコピーされていない限り、あなたの確認画像のhtmlフィールド名が何になるかはわかりませんが、一番上の行には次のようなものがあります:

$ verif_box = $ _POST ['verification_field'];

$ verif_box変数の値を設定していないので、常に失敗します。

0
追加された
JavaScriptは私が思うコードをチェックする?そうでない場合は、コードが有効かどうかをチェックするものが何もないので、追加する方法がわからないのです。
追加された 著者 Leah,
大丈夫、私はあきらめます - あなたが示唆したすべてを試しても、エラーメッセージを表示することはできません。私は両方のPHPファイル(連絡先と画像の検証)にメッセージを追加しようとし、どちらも間違ったコードが入力されたときに表示されます。間違ったコードを入力すると、少なくとも成功メッセージが表示され、ページはもう更新されません。助けてくれてありがとう。
追加された 著者 Leah,
これはもともと無料のオンラインコンタクトフォームとPHPメーラーでした。このサイトの誰かが私のためにカスタマイズして、正しく動作させるようにしました。だから私は、検証イメージファイルに$ messageを入れなければならないと仮定していますが、残りのコードは現在のファイルではありませんか? "
追加された 著者 Leah,
私はメッセージを ""に入れ、まだ表示されません。また、メソッドをpostからgetに変更すると、私の変数(ラジオ)のうちの2つが同じ答えを2回引き出しています。私が痛みを感じていたら謝り、あなたの助けに感謝します。
追加された 著者 Leah,
はい、間違ったコードが入力されたときに最終的にページがリフレッシュされず、代わりに残りの情報が保持され、確認コードのフィールドがクリアされます。残念ながら、それはまだ人にエラーが何であるか教えてくれません。私はポストから取得する方法を修正しました。なぜ私のエラーメッセージがもう表示されないのか知っていますか?
追加された 著者 Leah,
また気付いただけで、あなたのフォームはPOSTを行っていますが、すべてのPHP変数がGETを読み込んでいます。
追加された 著者 Patrick,
はい、これのために: "else if(isset($ message)and $ message!=" ")"。 $ verif_boxと同様、$ message変数も設定されていません。何とかそのコードも欠けている。
追加された 著者 Patrick,
$ message = "test"を実行する必要があります。上のどこかで... PHPコードがそれ以上ないと確信していますか?
追加された 著者 Patrick,
いいえ、私はそれがメインファイルに入ると思います。しかし、メッセージが何であるかを識別するロジックが必要です。何かチェックを行い、入力されたコードが間違っていると判断する必要があります。私はどこにも見ない
追加された 著者 Patrick,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
3 参加者の

招待状へのリンク: https://t.me/joinchat/B2gdSlA_dh1-BQtEKA2dfw このグループではPHPについて話します。 パートナー:kotaeta.com