Gå til innhold

Nekte bruker vidre dersom captcha kode er feil


Anbefalte innlegg

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 av bapeape
Lenke til kommentar
Videoannonse
Annonse

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 av Crowly
Lenke til kommentar

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

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 av Zandar
Lenke til kommentar
Gjest Slettet+142

Under logout-prosessen må du kjøre session_unregister("time"); eller unset($_SESSION["time"]); etter hva jeg har fått med meg ;)

Endret av Slettet+142
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...