Salve a tutti, sono nuovo in questo forum. Sono nuovo in campo Php e lo studio a livello scolastico.
Ultimamente mi dilettavo a creare un piccolo cifrario di cesare (che migliorerò con il tempo), però ho riscontrato un piccolo problema. Di per sé il programma funziona, ma ci sono due problemi (posto il codice qui di seguito):
Codice PHP:
<html>
<head>
<title>Cifrario di Cesare</title>
</head>
<body>
<form method = "GET">
Frase da criptare: <input name = "Text" type = "text">
</form>
Frase criptata:
<?php
$alfabeto = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
'u', 'v', 'w', 'x', 'y', 'z'); // array alfabeto
$cript = $_GET['Text'];
$lenght = strlen($cript); // trovo la lunghezza del testo
$key = 5; // chiave di spostamento
$newText = array(); // variabile dove si salva il testo criptato
for($i = 0; $i < $lenght; $i++){
for($j = 0; $j < 27; $j++){
if($cript[$i] == $alfabeto[$j]){ // qui comparo l'elemento con indice $i della stringa da criptare con // l' array alfabeto, il quale indice si incrementa per prima per trovare la
// corrispondenza. Una volta trovato che l'elemento della stringa $cripto è
// uguale all' elemento dell' array alfabeto, lo associo a quest'ultimo. Dopodiché
// per codificare, sommo il valore dell' indice con la chiave per trovare l'elemento corrispondente
$newText[] = $alfabeto[($j + $key) % 26]; // e faccio il modulo così che se la somma sfiori il limite massimo, parta dall' inzio.
echo $newText[$i];
} } }
?>
</body>
</html>
1 - mi stampa la frase criptata con le lettere una sotto l'altra;
2 - sotto ogni lettera esce un messaggio di errore che dice :
"Notice: Undefined offset: 26 in C:\Users\Francesco\Desktop\Php\cesare.php on line 26"
potreste suggerirmi come risolvere, perfavore? Ci sto sbattendo la testa da un paio di giorni ma non sono giunto a una conclusione concreta. Grazie a chiunque mi aiuterà.