Gå til innhold

Kan noen se over kodene?


Anbefalte innlegg

Videoannonse
Annonse
ENDRE: 

error_reporting(E_ALL & ~E_NOTICE);
 if ( empty($_POST['navn']) || 
   empty($_POST['epost']) || 
   empty($_POST['alder']) ||  
   empty($_POST['fylke']) ||  
   empty($_POST['god']) ||  
   empty($_POST['intr']) || 
   empty($_POST['hvorforSok']) || 
   empty($_POST['hvorforBli']) || 
   empty($_POST['kode-input']) ) {
   
 	echo "<i>Alle feltene må fylles ut!</i>";

TIL:

error_reporting(E_ALL & ~E_NOTICE);
 if ( empty($_POST['navn']) ||  {
   empty($_POST['epost']) || 
   empty($_POST['alder']) ||  
   empty($_POST['fylke']) ||  
   empty($_POST['god']) ||  
   empty($_POST['intr']) || 
   empty($_POST['hvorforSok']) || 
   empty($_POST['hvorforBli']) || 
   empty($_POST['kode-input']) ) {
   
 	echo "<i>Alle feltene må fylles ut!</i>";

Lenke til kommentar

En liten men veldig simpel forbedring vil være:

 

$fields = array('epost', 'alder', 'navn', 'fylke', 'god', 'intr'); // osv

$fieldIsMissing = false;
$missingFields = '';
foreach ($fields as $field) {
 if (empty($_POST[$field])) {
   $fieldIsMissing = true;
   $missingFields .= "$field<br />";
 }
}

if ($fieldIsMissing) {
 echo "Du må fylle ut alle feltene, følgende felter mangler: $missingFields";
}

 

Du skjønner ideen. If-setninger lange som en norsk vinter er uoversiktlig og ikke bra.

Dessuten gir du lite informasjon til brukere, tenk usability også.

Felter som "god" er også å gjøre seg selv en bjørnetjeneste siden du ikke forstår ved å lese koden hva det er, bruk beskrivende navn.

 

Koden jeg skrev her er for illustrasjon og ikke noe jeg ville puttet i ferdig kode.

Lenke til kommentar
ENDRE: 

error_reporting(E_ALL & ~E_NOTICE);
 if ( empty($_POST['navn']) || 
   empty($_POST['epost']) || 
   empty($_POST['alder']) ||  
   empty($_POST['fylke']) ||  
   empty($_POST['god']) ||  
   empty($_POST['intr']) || 
   empty($_POST['hvorforSok']) || 
   empty($_POST['hvorforBli']) || 
   empty($_POST['kode-input']) ) {
   
 	echo "<i>Alle feltene må fylles ut!</i>";

TIL:

error_reporting(E_ALL & ~E_NOTICE);
 if ( empty($_POST['navn']) ||  {
   empty($_POST['epost']) || 
   empty($_POST['alder']) ||  
   empty($_POST['fylke']) ||  
   empty($_POST['god']) ||  
   empty($_POST['intr']) || 
   empty($_POST['hvorforSok']) || 
   empty($_POST['hvorforBli']) || 
   empty($_POST['kode-input']) ) {
   
 	echo "<i>Alle feltene må fylles ut!</i>";

6474061[/snapback]

 

Funka ikke.

Lenke til kommentar

Hva med den istede?


$fields = array('epost', 'alder', 'navn', 'fylke', 'god', 'intr'); // osv

$fieldIsMissing = false;
$missingFields = '';
foreach ($fields as $field) {
if (empty($_POST[$field])) {
  $fieldIsMissing = true;
  $missingFields .= "$field<br />";
}
}

if ($fieldIsMissing) {
echo "Du må fylle ut alle feltene, følgende felter mangler: $missingFields";
}

Endret av 0lav
Lenke til kommentar
Hva med den istede?


$fields = array('epost', 'alder', 'navn', 'fylke', 'god', 'intr'); // osv

$fieldIsMissing = false;
$missingFields = '';
foreach ($fields as $field) {
if (empty($_POST[$field])) {
  $fieldIsMissing = true;
  $missingFields .= "$field<br />";
}
}

if ($fieldIsMissing) {
echo "Du må fylle ut alle feltene, følgende felter mangler: $missingFields";
}

6474755[/snapback]

 

Hmm..kan jo det da, men jeg er ikke så god på matriser og slik enda siden jeg er i opplæringsfasen enda :blush:

Endret av BigJackW
Lenke til kommentar
Vel koden jeg ga hadde jeg lagt til { . Du hadde if uten {} og else som starta } else {. Så du avslutta noe som ikke starta liksom.

6476020[/snapback]

 

 

Vell.. Nei.. Det var jo der det var feil på din, du satte { etter første empty() sjekk, mens på den han hadde fra før så det rett ut.. Gadd ikke å finne feilen på hans nå, da jeg mener at den som Findus skreiv blir lettere å bruke:)

Lenke til kommentar

Prøv med å flytte } på linje 67 til linje 112 på sende.php i den linken du sendte grunnet at scriptet gjør else kommandoen men fra linje 68 blir ikke inkludert i else scriptet men som eget + det blir feil i oppsettet :) Ikke helt stø i php men det tyder på feilen ligger der.

Lenke til kommentar
Prøv med å flytte } på linje 67 til linje 112 på sende.php i den linken du sendte grunnet at scriptet gjør else kommandoen men fra linje 68 blir ikke inkludert i else scriptet men som eget + det blir feil i oppsettet :) Ikke helt stø i php men det tyder på feilen ligger der.

6477466[/snapback]

 

Det vil ikke gå, siden det blir en if løkke inn en else. Men skal prøve meg på den matrisen.

Endret av BigJackW
Lenke til kommentar

Slik jeg så du hadde det var det slik ut (strippet litt kode):

 

If {}
Else {}

If {}
Elseif {}
Elseif {}
Elseif {}
Elseif {}
Else {}

 

Slik jeg foreslo det :

 

If {}
Else {

If {}
Elseif {}
Elseif {}
Elseif {}
Elseif {}
Else {}

}

 

Men er det et fy ting å kjøre inn flere sjekk i en If/Elseif/Else?

Lenke til kommentar
Slik jeg så du hadde det var det slik ut (strippet litt kode):

 

If {}
Else {}

If {}
Elseif {}
Elseif {}
Elseif {}
Elseif {}
Else {}

 

Slik jeg foreslo det :

 

If {}
Else {

If {}
Elseif {}
Elseif {}
Elseif {}
Elseif {}
Else {}

}

 

Men er det et fy ting å kjøre inn flere sjekk i en If/Elseif/Else?

6477802[/snapback]

 

Tror ikke det går.

Lenke til kommentar
Ja, men den matrisen den sjekker jo ikke om f.eks e-post er gyldig og at alder er et tall.

6477010[/snapback]

 

Som sagt, det er et illustrasjonseksempel, ikke en reell implementasjon. Jeg brukte bare samme sjekk som koden din allerede brukte.

 

Dessuten må jeg innrømme at jeg bare blir forvirret når man bruker fornorskinger som matriser (jeg går virkelig ut i fra at det er array du sikter til). Du mente sikkert at du ikke var så god på løkker ;)

I så fall foreslår jeg at du bruker annledningen til å eksperimentere litt og lærer litt mer. Uten løkker kommer du ikke langt.

Lenke til kommentar

Når du sier at den ikke sender mail, og ikke viser noe tekst, så satser jeg femmeren min på den setcookie-saken. Hvis den ender der hopper den ut av if blokken etterpå.

 

Så den setcookie-saken burde ikke være en del av elseif blokken. Sett den ovenfor som egen if.

Lenke til kommentar
Når du sier at den ikke sender mail, og ikke viser noe tekst, så satser jeg femmeren min på den setcookie-saken. Hvis den ender der hopper den ut av if blokken etterpå.

 

Så den setcookie-saken burde ikke være en del av elseif blokken. Sett den ovenfor som egen if.

6479516[/snapback]

 

Hmm, men hvordan skal jeg da få til at vis den er satt, så skal den jo ikke sende mail :S

 

Eller skal jeg legge den i sok.php i stede slik at det kommer melding før søknaden er klar til å sendes ?

Lenke til kommentar

Feilen er helt klart if / ifelse saken. I prinsippet, vil du aldri komme lengre enn "kake" saken. Hvis det er satt en cookie, så skriver den at du allerede har sendt en idag, og hopper over alle ifelse/else. HVis ikke det er satt cookie, så setter den cookie, og hopper over alle de andre elseif / else.

 

Men denne kan kanskje funke litt bedre ?:

 

 

if ( !eregi("[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*.[a-z]{2,4}", $epost) ) {
    echo "<h3>Søknaden kunne ikke sendes. <br>     venligst prøv igjen.</h3><br>      Du har skrevet inn en ugyldig alder e-postadresse:<b> " . $epost .   "</b>";
    die();
}


if ( !is_numeric($alder) ) {
    echo "<h3>Søknaden kunne ikke sendes. <br>
    venligst prøv igjen.</h3><br>
    Du har skrevet inn enn ugyldig alder:<b> " . $alder . "</b>";
    die();
}
if ( !isset($_COOKIE['soknad_crew']) ) {
    setcookie("soknad_crew", $ip, time()+3600*24);
}
else {
    echo "Du har allerde sendt en søknad disse 24 timene!";
    die();
}
if ( $kode !== $kode_input ) {
    echo "Du har skrevet inn feil antispam kode,<br> gå tilbake og prøv igjen.";
    die();
}
//if (eregi("[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*.[a-z]{2,4}", $epost) && is_numeric($alder) && isset($_COOKIE['soknad_crew']) && kode == $kode_input) {
   mail($til, $subjekt, $melding); //Melding til crew
   mail($epost, $svar_soker_subjekt, $svar_soker_melding); //Melding til      søker
   echo "<h3>Takk for din søknad.<br>
   Søknaden vil bli behandlet raskest mulig.</h3>";
//} else {
//    echo "<h3>Søknaden kunne ikke sendes. <br>    venligst prøv igjen.</h3><br>    Kontakt Webmaster for hjelp.";
//}

Du kan finne på noe annet enn die hvis du vil. F.eks sette en variabel true eller false, og hvis ikke den variabelen er satt, så sender du ikke mail.

 

 

 

Slett ikke testet i det hele tatt... Tas med en klype salt, men håper du skjønner hvor problemet ditt ligger.

 

/k

Endret av kakkle
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...