PHP Emailer Redirect werkt niet voor verificatiefout

Oké, ik ben een beetje in de war omdat deze code werkte en om een ​​of andere reden is gestopt. Niet zeker wanneer het niet meer werkte, maar iemand op deze site heeft het voor mij gemaakt en het was perfect als het werkte. De persoon combineerde mijn mailer.php, redirect-pagina's en html-code allemaal op één geweldige pagina. De verzonden succesvolle pagina werkt, maar de foutieve verificatiecode is spontaan gestopt met werken (?).

Hier is de code:

 <?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">

Contact Formulier

Vul het onderstaande formulier in om iemand van ons verkoopteam contact met u op te nemen

  
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" />

en vervolgens onderaan de pagina na de tag/html:

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

Error

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

en dan de rest van de html hier ... voor de geslaagde pagina die is ingediend en daarna de afsluitende php-tag.

Om het even welke ideeën waarom het ophield met werken? Elke manier om dit op te lossen in de huidige code? Zo niet, dan heb ik een manier nodig om de gebruiker te laten weten op welk formulier ze de verkeerde verificatiecode hebben ingevoerd. Momenteel wordt de huidige pagina vernieuwd als u de verkeerde code invoert.

Alle hulp zou zeer op prijs worden gesteld. Ik ben niet goed thuis in PHP, dus gebruik alstublieft de voorwaarden van 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 bestandscode:

<?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
Zou je het hele bestand in één keer willen posten, alsjeblieft? Ik weet niet zeker of dingen ontbreken of gewoon worden weggelaten. Wordt dit bestand opgenomen door een ander bestand of is dit het?
toegevoegd de auteur Dunning-Kruger, de bron
Ik heb nog steeds hulp nodig als iemand me kan helpen? Ik heb nog steeds geen werkende manier om de gebruiker een foutmelding te geven als ze de verkeerde verificatiecode invoeren. Al het andere werkt zoals het hoort. HELPEN???
toegevoegd de auteur Leah, de bron
toegevoegd de auteur Leah, de bron
@ OhCan - Ik zal afzonderlijk in één exemplaar posten - geef me een minuutje. Ik zal hier een link plaatsen als ik klaar ben.
toegevoegd de auteur Leah, de bron
@Patrick - heeft de bestandscode toegevoegd aan de onderkant van het originele bericht.
toegevoegd de auteur Leah, de bron
@patrick - er is een verificationimage.php-bestand dat wordt aangeroepen door img src - maar het bericht zou me dit niet laten opnemen omdat het dacht dat het een afbeeldingsbestand was. Moet je dat ook zien? Of zou mijn laatste opmerking gemakkelijker te doen zijn?
toegevoegd de auteur Leah, de bron
@patrick - als ik de manier wilde verwijderen waarop deze pagina het foutbericht oproept wanneer de verkeerde verificatiecode is ingevoerd en als deze een berichtvenster plaatst om de persoon die ze hebben ingevoerd, de verkeerde code te geven (vergelijkbaar met de validatie die momenteel wordt gebruikt voor vereist velden), zou u mij kunnen helpen dat te bereiken?
toegevoegd de auteur Leah, de bron
@patrick - Ik heb het bericht bewerkt om nu JavaScript te laten zien. Vertel me alsjeblieft als dat helpt. Er was niets veranderd sinds de tijd dat het werkte.
toegevoegd de auteur Leah, de bron
@patrick - misschien hebt u gelijk. Helpt dit:
toegevoegd de auteur Leah, de bron
@patrick - het formulier valideert de boete voor verplichte velden en toont de succesvolle pagina wanneer alles met succes is gevalideerd, en het bericht voor ontbrekende informatie uit de validatie werkt, de enige die niet "meer" verschijnt, is de fout bij het invoeren van de verkeerde validatiecode in het verificatie veld. Ik zal controleren of hij mij JavaScript heeft gegeven - het is mogelijk maar ik kan het me niet herinneren.
toegevoegd de auteur Leah, de bron
@patrick - ik zal de rest van de code invoeren - vond het niet belangrijk.
toegevoegd de auteur Leah, de bron
Kunt u de code van het PHP-bestand met verificatieafbeelding plaatsen?
toegevoegd de auteur Patrick, de bron
Het lijkt een beetje code te zijn die nog steeds ontbreekt. Kunt u meer code verstrekken?
toegevoegd de auteur Patrick, de bron
Nee, het is niet daarbinnen. Misschien is de service die u gebruikt voor de verificatiecode de reden om die cookie in te stellen. Het laat ook niet zien waar de $ verif_box wordt gedefinieerd. Er moet ergens een PHP-code zijn die de verificatiecode levert.
toegevoegd de auteur Patrick, de bron
Je gaat alleen een e-mail sturen als dit waar is: "md5 ($ verif_box). 'A4xn' == $ _COOKIE ['tntcon']". Wat u hebt gepost, laat niet zien dat er een cookie wordt ingesteld. Niet zeker wat zou zijn veranderd, maar dat is het ontbrekende stukje van deze puzzel. Mijn gok is dat MM_validateForm-functie het in stelt als alles geldig is.
toegevoegd de auteur Patrick, de bron
Ik probeer te zien waar de tntcon-cookie wordt geplaatst, maar zie deze niet. Is er ook Javascript? De MM_validateForm-functie zou aangeroepen moeten worden bij het indienen van het formulier.
toegevoegd de auteur Patrick, de bron

1 antwoord

Het verificatiebeeldbestand was een groot ontbrekend stuk. Dat is waar de cookie wordt geplaatst. Het lijkt erop dat een regel code aan de bovenkant van je script per ongeluk is verwijderd en dus je probleem veroorzaakt. Tenzij het gewoon niet is gekopieerd. Ik kan niet zeggen wat de html-veldnaam van uw verificatiebeeld zou zijn, maar helemaal bovenaan moet u iets hebben als:

$ verif_box = $ _POST ['verification_field'];

U stelt niet de waarde in voor de $ verif_box-variabele, dus deze zal altijd falen.

0
toegevoegd
het JavaScript controleert de code die ik denk? Zo niet, dan heb ik geen idee waarom niets controleert of de code geldig is en ik niet weet hoe ik deze moet toevoegen.
toegevoegd de auteur Leah, de bron
oke, ik geef het op - heb geprobeerd wat je hebt voorgesteld en krijg nog steeds geen foutmelding te zien. Ik heb geprobeerd het bericht toe te voegen aan beide php-bestanden (contact- en beeldverificatie) en geen van beide zal het laten zien als de verkeerde code is ingevoerd. Tenminste het succesbericht wordt weergegeven en de pagina wordt niet meer vernieuwd wanneer een verkeerde code wordt ingevoerd. Bedankt voor het proberen te helpen.
toegevoegd de auteur Leah, de bron
dit was oorspronkelijk een gratis online contactformulier en php-mailer. Iemand op deze site heeft het voor mij aangepast om het goed te laten werken. Dus ik neem aan dat ik het $ bericht "" in het verificatiebeeldbestand moet zetten, niet het huidige bestand waar de rest van de code is?
toegevoegd de auteur Leah, de bron
Ik heb het bericht in de "" gezet en het zal nog steeds niet getoond worden. Ook, bij het veranderen van de methode van post naar krijgen, trekken twee van mijn variabelen (radio's) twee keer hetzelfde antwoord. Ik verontschuldig me als ik pijn maak en ik waardeer je hulp.
toegevoegd de auteur Leah, de bron
oke, het is tenslotte niet het verfrissen van de pagina wanneer de verkeerde code is ingevoerd, in plaats daarvan houdt het de resterende informatie bij en wist het het veld voor de verificatiecode. Helaas vertelt het de persoon nog steeds niet wat de fout is. Ik heb de methode gerepareerd van post om te krijgen. Weet je waarom mijn foutmelding nog steeds niet meer wordt weergegeven?
toegevoegd de auteur Leah, de bron
Ook gemerkt, je formulier doet een POST, maar al je PHP-variabelen zijn GET aan het lezen.
toegevoegd de auteur Patrick, de bron
Ja, daarom: "else if (isset ($ message) and $ message! =" ")". Net als met $ verif_box, wordt $ message variable ook niet ingesteld. Op de een of andere manier ontbreekt die code ook.
toegevoegd de auteur Patrick, de bron
U zou $ message = "test" moeten doen; ergens in de buurt van de top ... Weet je zeker dat er niet meer PHP-code is?
toegevoegd de auteur Patrick, de bron
Nee, ik zou denken dat het in het hoofdbestand zou gaan. Maar er moet logica zijn die identificeert wat die boodschap is. Er moet iets worden gecontroleerd en vastgesteld dat de ingevoerde code onjuist was. Ik zie dat nergens
toegevoegd de auteur Patrick, de bron