PHP5 non riconosce codice

Altervista passerà a php5 perciò ho provato ad impostare php5 ma mi da problemi con l'invio del form, più precisamente con il codice captca che anche inserito correttamente esce l'alert "Codice errato".

Che modifica devo fare?

<?php 

//Captca-image  

session_start();  

if (empty($_SESSION['rand_code'])){  
$str = "";  
$length = 0;  
$caratteri = "abcdefghijkmnprstuvwxyz123456789";  /* Caratteri che appaiono come immagine */ 
for ($i = 0; $i < 4; $i++){          /* il 4 indica il numero di caratteri-immagine che appaiono */ 
$str .= $caratteri{rand(0,32)}; 
}  
$_SESSION['rand_code'] = $str;  
}  
$imgX = 60;//Sposta a dx i caratteri-immagine  
$imgY = 18;//Sposta in alto i caratteri-immagine  
$image = imagecreatetruecolor(60, 20);  
$backgr_col = imagecolorallocate($image, 238,239,239);//Colore di sfondo 
$border_col = imagecolorallocate($image, 208,208,20);//Colore del bordo  
$text_col = imagecolorallocate($image, 46,60,31);//Colore dei caratteri-immagine 
  
imagefilledrectangle($image, 0, 0, 60, 20, $backgr_col);//Cambiando i 4 valori appare un'ombra nera e si può creare un'effetto rilievo o incassato del rettangolo   
imagerectangle($image, 0, 0, 59, 19, $border_col);// Sposta il bordino colorato del rettangolo 

$font = "courbi.ttf"; 
$font_size = 14;//Dimensione dei caratteri-immagine  
$angle = 0;//Ruota obliqui i caratteri-immagine  
$box = imagettfbbox($font_size,$angle,$font,$_SESSION['rand_code']);  
$x = (int)($imgX - $box[4]) / 2;//Sposta a sx i caratteri-immagine  
$y = (int)($imgY - $box[5]) / 2;//Sposta in alto i caratteri-immagine 
imagettftext($image,$font_size,$angle,$x,$y,$text_col,$font,$_SESSION['rand_code']);  

header("Content-type: image/jpeg");  
imagejpeg($image);  
imagedestroy ($image); 
  
//Fine Captca-image  


//Controlla che il codice Captca inserito corrisponda a quello che appare nell'immagine 
if ($_SESSION['rand_code'] != $_POST['validator']) 
$errore .= "Codice errato!"; 
if ($errore) 
echo $errore; 
?>
inviato 8 anni fa
php
php
6
X 0 X

A prima vista non vedo niente di strano  :dunno:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Lo so. ma se imposto php5 e mi mandi un messaggio esce l'errore  :lamo:

risposto 8 anni fa
php
php
6
X 0 X

che errore ricevi?

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Esce la scritta Codice errato! anche se il codice è inserito giusto

risposto 8 anni fa
php
php
6
X 0 X

quindi non è un errore di PHP ma un messaggio generato dallo script

Prova a sostitutire

$errore .= "Codice errato!";

con

$errore .= "Codice errato! Rand_code = $_SESSION[rand_code] - Validator = $_POST[validator]";

In questo modo dovresti vedere cosa il codice da indovinare e quello inserito dall'utente

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

quindi non è un errore di PHP ma un messaggio generato dallo script

Prova a sostitutire

$errore .= "Codice errato!";

con

$errore .= "Codice errato! Rand_code = $_SESSION[rand_code] - Validator = $_POST[validator]";

In questo modo dovresti vedere cosa il codice da indovinare e quello inserito dall'utente

 :bye:

Ora non mi da più Codice errato! ma Inserire il Codice

if (empty($validator))
$errore .= "Inserire il Codice";
risposto 8 anni fa
php
php
6
X 0 X

Non credo dipenda dalla semplice modifica che ti ho suggerito  :dunno:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Che faccio, tolgo il codice captca?  :dunno:

risposto 8 anni fa
php
php
6
X 0 X

Ho risolto, ho rimesso tutto come all'origine ed ho sostituito solo questo

if (empty($validator))

con questo:

if (empty($_POST['validator']))
risposto 8 anni fa
php
php
6
X 0 X

perfetto, non l'avevo notato, era il solito problema del register_global

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda