Bjonski Skrevet 23. mars 2011 Del Skrevet 23. mars 2011 (endret) 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 23. mars 2011 av Bjohansen Lenke til kommentar
eigan Skrevet 23. mars 2011 Del Skrevet 23. mars 2011 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
Bjonski Skrevet 23. mars 2011 Forfatter Del Skrevet 23. mars 2011 Takktakk strtolower funker meget bra. Lenke til kommentar
srbz Skrevet 23. mars 2011 Del Skrevet 23. mars 2011 (endret) 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 23. mars 2011 av srbz 1 Lenke til kommentar
Bjonski Skrevet 23. mars 2011 Forfatter Del Skrevet 23. mars 2011 Takk for utdypende forklaring. Å tvinge strengen til å bli gjort om til lowercase fungerer utmerket. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå