bapeape Skrevet 2. februar 2008 Del Skrevet 2. februar 2008 (endret) Hvordan skal dette gjøres? hadde en topic tidligere hvor jeg fikk hjelp med session, men har ett problem til, om jeg trykker feil kode, står det at koden er feil, men jeg har likevel bypassa captcha koden, og blir sendt vidre til funksjonen som liksom skal være sikra, da er jo vitsen så å si borte. noen som kunne gitt meg et hint? Endret 2. februar 2008 av bapeape Lenke til kommentar
Jonas Skrevet 2. februar 2008 Del Skrevet 2. februar 2008 Du må ha to betingelser i samme if-spørring; en for å sjekke riktig captcha-kode og en for å sjekke brukernavn/passord. Lenke til kommentar
Crowly Skrevet 2. februar 2008 Del Skrevet 2. februar 2008 (endret) Noe slikt if ($_SESSION['captcha']==$_POST['captcha']) { // det du skal utføre her } else echo "Du tastet inn feil kode"; //slutt Hvis captcha koden ikke er lik, så hopp over resten av koden og skriv ut kun det som skal vises uannsett + en feilmelding. Endret 2. februar 2008 av Crowly Lenke til kommentar
bapeape Skrevet 2. februar 2008 Forfatter Del Skrevet 2. februar 2008 koden blir sjekket, den sier fra om man skrev riktig eller galt, men om den er gal så trenger ikke bruker og taste om 10 minuteer, så bruker oppnår det samme om han trykker feil eller riktig, han kommer liksom vidre Lenke til kommentar
Martin A. Skrevet 2. februar 2008 Del Skrevet 2. februar 2008 Da tror jeg nok du på blotte noe kode for oss. Lenke til kommentar
bapeape Skrevet 3. februar 2008 Forfatter Del Skrevet 3. februar 2008 verifier.php <?php $cryptinstall="./cryptographp.fct.php"; include $cryptinstall; ?> <html> <?php if (chk_crypt($_POST['code'])) echo "<a><font color='#009700'>=> you entred the righ code !</font></a>"; else echo "<a><font color='#FF0000'>=> Errr, your not a human right?</font></a>"; ?> </html> cryptographp.fct.php <?php // ----------------------------------------------- // Cryptographp v1.4 // (c) 2006-2007 Sylvain BRISON // // www.cryptographp.com // [email protected] // // Licence CeCILL modifiée // => Voir fichier Licence_CeCILL_V2-fr.txt) // ----------------------------------------------- if(session_id() == "") session_start(); $_SESSION['cryptdir']= dirname($cryptinstall); function dsp_crypt($cfg=0,$reload=1) { // Affiche le cryptogramme echo "<table><tr><td><img id='cryptogram' src='".$_SESSION['cryptdir']."/cryptographp.php?cfg=".$cfg."&".SID."'></td>"; if ($reload) echo "<td><a title='".($reload==1?'':$reload)."' style=\"cursor:pointer\" onclick=\"java script:document.images.cryptogram.src='".$_SESSION['cryptdir']."/cryptographp.php?cfg=".$cfg."&".SID."&'+Math.round(Math.random(0)*1000)+1\"><img src=\"".$_SESSION['cryptdir']."/images/reload.png\"></a></td>"; echo "</tr></table>"; } function chk_crypt($code) { // Vérifie si le code est correct include ($_SESSION['configfile']); $code = addslashes ($code); $code = str_replace(' ','',$code); // supprime les espaces saisis par erreur. $code = ($difuplow?$code:strtoupper($code)); switch (strtoupper($cryptsecure)) { case "MD5" : $code = md5($code); break; case "SHA1" : $code = sha1($code); break; } if ($_SESSION['cryptcode'] and ($_SESSION['cryptcode'] == $code)) { unset($_SESSION['cryptreload']); if ($cryptoneuse) unset($_SESSION['cryptcode']); return true; } else { $_SESSION['cryptreload']= true; return false; } } ?> Lenke til kommentar
Zandar Skrevet 3. februar 2008 Del Skrevet 3. februar 2008 (endret) Ga deg følgende kode i en tidligere tråd for å sende bruker til captcha-sjekk hvert 10'ende minutt. <?php session_start(); if (isset($_SESSION['time'])) { $now = time(); $interval = 600;// 10 minutter gitt i sekunder if ($_SESSION['time'] + $interval <= $now) { $_SESSION['time'] = $now; header('Location: http://mafiastreet.to.md/capt.php'); die(); } } else { //Sette sesjonvariabel dersom den ikke er satt. $_SESSION['time'] = time(); header('Location: http://mafiastreet.to.md/capt.php'); } ?> Denne koden tar ikke hensyn til om brukeren taster rett kode i captcha, den bare sender brukeren til sjekk hvert 10'ende minutt. Det er derimot enkelt å endre den slik at den tar hensyn til captcha-sjekken. Lag en ny php-fil og bruk følgende kode. Gi den f.eks navnet captcha_tidsur.php <?php session_start(); if (isset($_SESSION['time'])) { $now = time(); $interval = 600;// 10 minutter gitt i sekunder if ($_SESSION['time'] + $interval <= $now) { unset($_SESSION['time']); $_SESSION['last_page'] = $_SERVER['PHP_SELF']; header('Location: http://mafiastreet.to.md/capt.php'); die(); } } else { //Lagre hvilken side brukeren er på og send til captcha-sjekk $_SESSION['last_page'] = $_SERVER['PHP_SELF']; header('Location: http://mafiastreet.to.md/capt.php'); exit(); } ?> Endringene som er gjort er at $_SESSION['time'] ikke lenger blir satt i dette scriptet. Altså brukeren vil alltid bli sendt til captcha-sjekken dersom du ikke setter $_SESSION['time'] en annen plass. Dette kan utnyttes ved at du setter $_SESSION['time'] ved korrekt inntastet kode i capctha-sjekken. Ved å putte koden ovenfor i et eget script slipper du å kopiere koden over i hver side du vil beskytte.Du bare inkluderer fila på toppen av scriptet. f.eks <?php require ('captcha_tidsur.php'); ?> verifier.php må altså endres slik at $_SESSION['time'] blir satt ved korrekt kode. Har endret det i koden nedenfor, samt endret scriptet slik at det ikke viser noe html, men sender brukeren videre til ny sjekk ved feil kode eller siste side ved korrekt kode. <?php $cryptinstall = "./cryptographp.fct.php"; include $cryptinstall; if (chk_crypt($_POST['code'])) { //Sette nåværende tid i session $_SESSION['time'] = time(); //Sjekke om siste side er satt i session og sende bruker videre if (isset($_SESSION['last_page'])) { //Sende bruker tilbake til siste side han var på $last_page = $_SESSION['last_page']; header("Location: http://mafiastreet.to.md/$last_page"); exit(); } else { //Sende brukeren til hvilken som helst side header("Location: http://mafiastreet.to.md/"); exit(); } } else { //Feil kode inntastet. Sende bruker tilbake til CAPTCHA-skjema. header("Location: http://mafiastreet.to.md/capt.php"); exit(); } ?> Har mine tvil om du faktisk skjønner koden, men vil anbefale deg å prøve å skjønne den isteden for å bare kopiere den. Er lite inspirerende for meg å hjelpe deg dersom du kun er interessert i å drive et mafiaspill og ikke i å faktisk lære deg php. Er greit at folk vil lage mafiaspill, men virker som de fleste er lite villige til å lære seg php godt... Endret 3. februar 2008 av Zandar Lenke til kommentar
bapeape Skrevet 6. februar 2008 Forfatter Del Skrevet 6. februar 2008 funket dessverre ikke, må bare forbi captcha en gang, helt til man logger ut og inn igjen, og man kan bare gå direkte til crime.php uten captcha sjekk, men takk uansett Lenke til kommentar
Gjest Slettet+142 Skrevet 6. februar 2008 Del Skrevet 6. februar 2008 (endret) Under logout-prosessen må du kjøre session_unregister("time"); eller unset($_SESSION["time"]); etter hva jeg har fått med meg Endret 6. februar 2008 av Slettet+142 Lenke til kommentar
Zandar Skrevet 7. februar 2008 Del Skrevet 7. februar 2008 Kan du poste koden i crime.php og verifier.php slik den er nå? Lenke til kommentar
bapeape Skrevet 9. februar 2008 Forfatter Del Skrevet 9. februar 2008 jepp bruker pastebin jeg verifier.php crime.php captcha_tidsur.php 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å