Gå til innhold

PHP or funksjon


Anbefalte innlegg

Jeg holder på med litt lett PHP. Lager en slags gjestebok/kommentar-system.

 

Har funnet en meget lett måte å filtrere spam ved hjelp av et "lurespørsmål", dette er ikke bombesikkert, men ønsker ikke å gjøre det avansert.

 

Koden min så langt:

<?php

$post = $_GET["post"];

if ($post == "true") {
   include "config/sql_config.php";
   include "config/status_messages.php";

   $name = $_POST['name'];
   $email = $_POST['email'];
   $message = $_POST['message'];

   $name = mysql_real_escape_string($name);
   $email = mysql_real_escape_string($email);
   $message = mysql_real_escape_string($message);

   if (!$name) {
       echo "$echo_error_name";
       return;
   } else {
       if (!$message) {
           echo "$echo_error_message";
           return;
       } else {
           if (!$email) {
               echo "$echo_error_email";
               return;
           } else {
               if ($_POST['sjekkpost'] != "mandag") {
                   echo "$echo_error_check";
                   return;
               }
           }
       }
   }

   mysql_query("INSERT INTO register VALUES('$name', '$email', '$message', 'id') ")
           or die(mysql_error());
   echo "$echo_success";
} else {
   echo "<form action='?page=default&post=true' method='POST'>
   Name: <br />
   <input type='text' name='name' /> <br />
   E-Mail: <br />
   <input type='text' name='email' /><br />
   <textarea cols='30' rows='5' name='message'></textarea><br />
   Hva er den første dagen i uken? <br />
   <input type='text' name='sjekkpost' /> <br />
   <input type='submit' value='send' />
</form>";
}
?>

 

Problemet mitt er at "sikkerhetsspørmålet" bare takler "mandag" som svar, mens "Mandag" blir ikke godtatt.

 

Jeg har prøvd:

if ($_POST['sjekkpost'] != "mandag" || "Mandag") {
                   echo "$echo_error_check";
                   return;
               }

Men da går den rett til $echo_error_check

 

Noen som ser hva som er galt?

Endret av Bjohansen
Lenke til kommentar
Videoannonse
Annonse

if ($_POST['sjekkpost'] != "mandag" || $_POST['sjekkpost'] != "Mandag") { ... }

 

hva med å ta strtolower(), så slepper du sjekke alle mulige kombinasjoner..

 

if (strotolower($_POST['sjekkpost']) != "mandag") { ... }

Lenke til kommentar

For å svare konkret på spørsmålet: || betyr "eller", men kan ikke brukes på samme måte som dagligtale. Sannhetsuttrykket "i dag er mandag eller Mandag" vil ikke PHP forstå, du måtte isåfall omformulere det til "i dag er mandag eller i dag er Mandag" - slik eigan har gjort. Hver side av || eller && er nemlig nødt å være et sannhetsuttrykk (boolsk verdi). Strengen "Mandag" er ikke et sannhetsuttrykk.

 

Når det er sagt, den andre løsningen hans er langt bedre. Denne tar høyde for varianter som "MANDAG" og "mANDAG" i tillegg.

Endret av srbz
  • Liker 1
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...