Salve a tutti, sto lavorando ad un progetto per gli esami di codifica/decodifica.
Il progetto è il seguente:
ho un form HTML composto da una textarea dove l'utente inserisce il proprio testo in chiaro e da un bottone che invia i dati ad un file php che li elabora.
Il codice php permette di associare ad ogni carattere contenuto nella textarea il proprio codice ascii e sommare il risultato di ogni conversione ad una variabile separando ogni valore con un "/". Al termine della conversione di tutta la stringa farà visualizzare la variabile che consisterà in una serie di numeri intervallati da un "/".
il codice è il seguente:
Codice PHP:
$testo=$_POST['lettera'];
$lunghezza=strlen($testo);
echo "lunghezza:".$lunghezza."<br>";
echo $testo;
$carattere="";
$cifrato="";
for($i=0;$i<$lunghezza; $i++){ //INIZIO CICLO DI CIFRATURA CARATTERI IN CODICE ASCII
$carattere=ord($testo[$i]);
if ($carattere=="195"){ // SE IL CODICE RISULTA 195 ALLORA NON LO DEVE CONSIDERARE E DEVE PASSARE A QUELLO SUCCESSIVO
$cifrato=$cifrato; // =
}
else
$cifrato=$cifrato.$carattere."/"; //AGGIUNGE AL TESTO CIFRATO IL CODICE DEL CARATTERE ANALIZZATO IN QUESTO CICLO
print("al carattere: $testo[$i] corrisponde il valore: $carattere - ". chr($carattere)."<br>");
} //FINE CICLO DI CIFRATURA CARATTERI IN CODICE ASCII
print("<br><br><br><br><br>il testo cifrato è:<br>");
print("$cifrato<br><br>"); //VISUALIZZAZZIONE TESTO CIFRATO IN CODICE ASCII
Il problema è che quando nella textarea inserisco i caratteri speciali come "àèìòù" il file php li riceve correttamente ma al momento della codicfica in codice mi da una serie di problemi:
1)la vera lunghezza della stringa in chiaro aumenta di uno per ogni carattere speciale.
es. la parola attività è costituita da 8 caratteri ma il file php ne conta 9.
Il file php ogni volta mi aggiunge il codice 195 prima del carattere speciale, questo codice corrisponde al "+" infatti come potete vedere da codice ho dovuto eliminarlo nella somma finale dei caratteri convertiti.
2)ad ogni carattere speciale spesso da un valore diverso da quello da me trovato nelle tabelle ascii.
es. al carattere "à" alcune volte associa il valore "224" (quello secondo me più giusto) altre volte associa il valore "160" che corrisponde al carattere "á".
Questo è un problema che da a tutti i caratteri àèìòù cioè alcune volte restituisce il valore esatto altre volte restituisce il valore della lettera l'accento opposto.
I codici che genera sono i seguenti :
à -> 224 -> 160
è -> 232 -> 168
ì -> 236 -> 172
ò -> 242 -> 178
ù -> 249 -> 185
Qualcuno potrebbe aiutarmi a risolvere questo problema? Grazie in anticipo :)
se avete bisogno posso darvi il sito così verificate voi stessi.