Finito e funzionante:
HTML:
<HTML>
<BODY>
<FORM ACTION="decifro.php" METHOD="POST">
<INPUT TYPE="Text" NAME="chiave"> chiave <BR>
<INPUT TYPE="Text" NAME="frase"> Inserisci la frase da decifrare <BR>
<INPUT TYPE="Submit" VALUE="invia">
<INPUT TYPE="Reset" VALUE="cancella">
</FORM>
</BODY>
</HTML>
PHP:
<HTML>
<BODY>
<?php
$chiave=$_POST['chiave'];
$frase=$_POST['frase'];
$vettorechiave = [];
$posizioni = [];
$chiave=strtolower($chiave);
$chiave = str_replace(' ', '', $chiave);
$l=0;
$lettere = [];
$frase=strtolower($frase);
$frase = str_replace(' ', '', $frase);
$nc = strlen($chiave);
$nf= strlen($frase);
echo $nf;
// Aggiungo la x se la frase è dispari
if($nf % 2 != 0 ){
$frase[$nf]="x";
echo $frase;
}
for($i=0;$i<$nc;$i++){
if (!in_array($chiave[$i],$vettorechiave)) {
$vettorechiave[]=$chiave[$i];
}
}
echo "La chiave senza ripetizioni e':";
foreach ($vettorechiave as $value) {
echo $value;
}
for($i=97;$i<25+97;$i++){
if(!in_array(chr($i),$vettorechiave)){
$vettorechiave[]=chr($i);
}
}
?>
<table border=1>
<?php //VISUALIZZO LA TABELLA E POPOLO IL VETTORE CON LE POSIZIONI
$righe = 5; // setta il num di righe
$colonne = 5; // setta il num di colonne
$indice_elenco=0;
$k=0;
$i=0;
$l;
for($i=0; $i<$righe; $i++) { // 1^ ciclo creo righe
echo "<tr>";
for($k=0; $k<$colonne; $k++) { // 2^ ciclo creo le col
echo "<td>" ;
$posizioni[$vettorechiave[$indice_elenco]]="$i,$k";
echo $vettorechiave[$indice_elenco];
$indice_elenco++;
}
}
?></table>
<?php
$frase=str_replace('z', 'y', $frase);
print_r ($posizioni);
print_r ($vettorechiave);
$frasecifrata="";
for($i=0;$i<$nf;$i=$i+2){
$stfrase=substr($frase,$i,2);
$pos1=$posizioni[$stfrase{0}];
$pos2=$posizioni[$stfrase{1}];
$let1pos = explode(",", $pos1);
$let2pos = explode(",", $pos2);
if($let1pos[0]==$let2pos[0]&&$let1pos[1]!=$let2pos[1]){
$let1pos[1]=$let1pos[1]-1; $let2pos[1]=$let2pos[1]-1;
if($let1pos[1]==(-1) ){
$let1pos[1]=4;
}
if( $let2pos[1]==(-1)){
$let2pos[1]=4;
}
}
if($let1pos[0]!=$let2pos[0]&&$let1pos[1]==$let2pos[1]){
$let1pos[0]=$let1pos[0]-1; $let2pos[0]=$let2pos[0]-1;
if($let1pos[1]==(-1) ){
$let1pos[1]=4;
}
if( $let2pos[1]==(-1)){
$let2pos[1]=4;
}
}
if($let1pos[0]==$let2pos[0]&&$let1pos[1]==$let2pos[1]){
$let1pos[1]=4; $let2pos[1]=4;
$let1pos[0]=4; $let2pos[0]=4;
}
if($let1pos[0]!=$let2pos[0]&&$let1pos[1]!=$let2pos[1]){
$p1=$let1pos[0];
$p2=$let2pos[0];
$let1pos[0]=$let2pos[0];
$let2pos[0]=$p1;
}
$primalettera = implode(",", $let1pos);
$secondalettera = implode(",", $let2pos);
$lettera1 = array_search($primalettera, $posizioni);
$lettera2 = array_search($secondalettera, $posizioni);
$frasedecifrata=$frasedecifrata.$lettera1.$lettera2;
}
echo $frasedecifrata;
?>
</BODY>
</HTML>