View Full Version : PHP - Codice di sicurezza...
negator136
07-10-2006, 19:07
Originariamente inviato da Sl4sh
supponiamo di voler fare un form e che si debba ricopiare un numero generato casualmente in un form prima di inviare il messaggio...
volendo mantenere tutto nello stesso file, io ho pensato ad una cosa del genere:
<?php
if(isset($codice))
{
session_start();
if($codice==$_SESSION[key]) fai quello che devi fare... (magari salva i dati in un database)
else stampa un messaggio di errore...
}
?>
<form...>
<input vari />
<?php
$num=rand(0,9);
session_start();
$_SESSION[key]=$num;
echo("$num"); //questo codice va ricopiato nel form successivo
?>
<input ... value="codice" />
<input ... invia />
</form>
cosa ne dite?
a parte il fatto che non sono sicuro che funzioni, voi avete qualche suggerimento?
sono un "programmatore" autodidatta e non so come un professionista possa affrontare un quesito del genere...
GRAZIE
negator136
08-10-2006, 12:05
up :)
Kappaloris
08-10-2006, 12:41
praticamente questo sarebbe un captcha casalingo.
se non vuoi tribolare ed usare un metodo + sicuro (prechè questo è facilissimo da aggirare(nel senso che sarebbe facile fare uno script che legge il numero e lo ricopia paro paro nel form)) cerca uno script che utilizzi i captcha.
I captcha sarebbero quelle immagini leggermente distorte che l'utente deve ricopiare per poter procedere. Il fatto che siano delle immagini distorte rende molto più difficile (ma cmq assolutamente non impossibile) il processo di riconoscimento da parte di uno script maligno.
negator136
08-10-2006, 13:14
praticamente questo sarebbe un captcha casalingo.
se non vuoi tribolare ed usare un metodo + sicuro (prechè questo è facilissimo da aggirare(nel senso che sarebbe facile fare uno script che legge il numero e lo ricopia paro paro nel form)) cerca uno script che utilizzi i captcha.
I captcha sarebbero quelle immagini leggermente distorte che l'utente deve ricopiare per poter procedere. Il fatto che siano delle immagini distorte rende molto più difficile (ma cmq assolutamente non impossibile) il processo di riconoscimento da parte di uno script maligno.
si si, il primo passo sarà far stampare $num in maniera difficilmente comprensibile da una macchina...
il mio quesito era riferito alla bontà della struttura dello script. :)
bianchins
09-10-2006, 18:46
Io sostituirei if(isset($codice)) con if(isset($_POST["codice"])) utilizzando quindi le variabili superglobali. Dal php 4.qualcosa (non mi ricordo esattamente :D ) la direttiva register_globals è settata a OFF di default, quindi per richiamare il valore di un form bisogna utilizzare $_GET o $_POST (se sei in dubbio, usa $_REQUEST). :)
Se vorrei farlo io un captcha, si potrebbe fare con le gd?
Non ho mai capito come fanno a distorcere così i numeri :D
Alessio.16390
02-07-2007, 01:13
Riuppo questo topic abbastanza old :D
Sto facendo uno scriptino ed ho usato l'esempio di negator136 (Ah, grazie ! )
Dovrei creare un controllo,
Prima di tutto, ho creato il controllo del campo "Vuoto"
if (empty($_POST['codice'])) $error[] = 'Attenzione : Inserisci Codice!';
Che funziona bene.
Ora dovrei creare il controllo del numero corretto; e se il codice inserito non è corretto, rimanda un errore e quindi non procede con l'invio del form.
Potete dirmi cosa sbaglio?
if ($_POST['codice'] !== $_SESSION[key]) $error[] = 'Attenzione : Codice Errato !';
Forse questo: $_SESSION[['key']
Alessio.16390
02-07-2007, 10:12
Forse questo: $_SESSION[['key']
Grazie della risposta.
Già,
E' quello che credo anche io, ma non ho altre variabili da dargli, e sinceramente non ho idea di come fare.
Visto il $_SESSION[key]=$num;
Avevo provato con 'num' , ma niente.
Infatti deve essere:
$_SESSION['key']=$num;
Alessio.16390
02-07-2007, 12:31
Infatti deve essere:
$_SESSION['key']=$num;
Nada, non riesce a definire il numero.
Viene fuori l'errore (Attenzione : Codice Errato !!)
:doh:
bianchins
02-07-2007, 18:12
Prova con un po' di debug...ad esempio fai stampare le due variabili:
echo "Session key: ".$_SESSION['key']."<br>";
echo "Num: ".$num;
E posta cosa ti viene fuori :D
Alessio.16390
02-07-2007, 19:02
Session key: 19
Num: 19
19 = numero random compreso tra 0-100
:D
Alessio.16390
04-07-2007, 18:43
Non riesco a venirne fuori, sto guardando come sono fatti gli script captcha per farmi un idea, ma nulla :(
Aspetta...session_start mettilo prima di qualsiasi output della pagina...altrimenti non può inviare il cookie con i dati di sessione...
Alessio.16390
07-07-2007, 03:09
Riuppo questo topic abbastanza old :D
Sto facendo uno scriptino ed ho usato l'esempio di negator136 (Ah, grazie ! )
Dovrei creare un controllo,
Prima di tutto, ho creato il controllo del campo "Vuoto"
if (empty($_POST['codice'])) $error[] = 'Attenzione : Inserisci Codice!';
Che funziona bene.
Ora dovrei creare il controllo del numero corretto; e se il codice inserito non è corretto, rimanda un errore e quindi non procede con l'invio del form.
Potete dirmi cosa sbaglio?
if ($_POST['codice'] !== $_SESSION[key]) $error[] = 'Attenzione : Codice Errato !';
L'errore era qui " !== "
Doveva essere " != "
Un amico mi ha fatto notare lo sbaglio!
Che idiota che sono!
Grazie a tutti.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.