Elenet.net
+1 voto
realizzare in php, un piccolo portale che facendo uso dell'algoritmo Playfair cipher, cifri una frase data dall'utente.
quesito posto 6 Aprile 2017 in Informatica da tonins Corsista (123 punti)
  

11 Risposte

+1 voto
Salve prof, lo metto ora l'esercizio perchè l'account è stato approvato adesso, non è completo sono arrivato dove ho potuto, sorry.

Pagina HTML

<HTML>
<BODY>

<FORM ACTION="cifrario.php"  METHOD="POST">
<INPUT TYPE="Text" NAME="chiave"> chiave <BR>
<INPUT TYPE="Text" NAME="frase"> Inserisci la frase <BR>

<INPUT TYPE="Submit" VALUE="invia">
<INPUT TYPE="Reset" VALUE="cancella">

</FORM>

</BODY>
</HTML>

Pagina PHP

<HTML>
<BODY>

<?php
     
$chiave=$_POST['chiave'];
$frase=$_POST['frase'];
$vettorechiave = [];
$posizioni = [];
$chiave=strtolower($chiave);
$chiave = str_replace(' ', '', $chiave);
$l=0;

$frase=strtolower($frase);
$frase = str_replace(' ', '', $frase);
$frase=utf8_encode($frase); //Sostitusce le lettere accentate
$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;

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>" ;

echo $vettorechiave[$indice_elenco];
$indice_elenco++;
$posizioni[$l]="$i,$k";
$l++;

}

}

?></table>
<?php

foreach($posizioni as $value1){
    echo  $value1;
}
?>

</BODY>
</HTML>
risposta inviata 9 Aprile 2017 da Ale200197 Corsista (76 punti)
completalo appena possibile
Esercizio finito:
<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);
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]==5 ){
                $let1pos[1]=0;
            }
            if( $let2pos[1]==5){
              $let2pos[1]=0;
            }
       
        }
       
        if($let1pos[0]!=$let2pos[0]&&$let1pos[1]==$let2pos[1]){
           
            $let1pos[0]=$let1pos[0]+1; $let2pos[0]=$let2pos[0]+1;
           

if($let1pos[0]==5 ){
                $let1pos[0]=0;
            }
            if( $let2pos[0]==5){
              $let2pos[0]=0;
            }
        }
       
        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);
   
   
   
    $frasecifrata=$lettera1.$lettera2;
    echo $frasecifrata;
}

   

   


?>

</BODY>
</HTML>
Mi è piaciuta molto l'idea di rimuovere la "y" in favore della "z":

$frase=str_replace('z', 'y', $frase);
+1 voto
<HTML>
<BODY>

<FORM ACTION="crifrario.php" METHOD="POST">
<INPUT TYPE="Text" NAME="chiave" > chiave <BR>

<INPUT TYPE="Submit" VALUE="invia">
<INPUT TYPE="Reset" VALUE="cancella">

</FORM>
</BODY>
</HTML>

<HTML>
<BODY>

<?php

$chiave=$_POST('chiave');

$vettorechiave =();

$chiave=strlower($chiave);
$chiave =str_replace(' ' , '', $chiave);

$n = strlen($chiave);

for($i=0;$i<$n;$i++){

if(!in_array($chiave[$i], $vettorechiave)) {
$vettorechiave[]=$chiave[$i];

}
}

foreach ($vettorechiave as &$value){

echo $value;
}

for($i=97;$i<25+97;i++){

if(!in_array(chr($i), $vettorechiave){
$vettorechiave[]=chr[$i];

$vettorechiave[]=chr($i);

?>

<table border=1>

<?php

$righe = 5;

$colonne =5;

$indice_elenco=0;

//echo "<table align=\"center\ "border=\"1\" width=\"300\">\n";

for ($i=0;$righe; $i++){

echo"<tr>\n";

for($k=0; $k<colonne; $k++){

echo "<td>" ;

echo chr($indice_elenco+97);
$indice_elenco++;
echo "</td>\n";

}

echo"</tr>\n";
}
?> </table>";

</BODY>
</HTML>
risposta inviata 21 Aprile 2017 da Salvo_Bisco (27 punti)
+1 voto

Buonasera professore le invio la parte definita, che funziona.

HTML:

<HTML>
<BODY>

<FORM ACTION="cifrario.php"  METHOD="POST">
<H1>ALGORITMO PLAYFAIR CIPHER </H1><BR>
INSERISCI LA CHIAVE: <INPUT TYPE="Text" NAME="chiave">
<BR>
<br>
INSERISCI LA FRASE DA CIFRARE: <INPUT TYPE="Text" NAME="frase"><BR>
<BR>
<INPUT TYPE="Submit" VALUE="INVIA">
<INPUT TYPE="Reset" VALUE="RESET">

</FORM>

</BODY>
</HTML>
---------------------------------------------------------------------
PHP:

<HTML>
<BODY>

<?php
     
$chiave=$_POST['chiave'];
$frase=$_POST['frase'];
$vettorechiave = [];
$chiave=strtolower($chiave);
$chiave = str_replace(' ', '', $chiave);
$n = strlen($chiave);
for($i=0;$i<$n;$i++){
    
if (!in_array($chiave[$i],$vettorechiave)){ ;
echo $vettorechiave[]=$chiave[$i];
}
}
$vettorefrase = [];
$frase=strtolower($frase);
$frase = str_replace(' ', '', $frase);
$n = strlen($frase);
for($i=0;$i<$n;$i++){
    
if (!in_array($frase[$i],$vettorefrase)){ ;
echo $vettorefrase[]=$frase[$i];
}
}

?>

<br>

<?php
//print_r($vettorechiave);

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
$righe = 5;
$colonne = 5;
$indice_elenco=0;
echo "<table align=\"center\" border=\"1\" width=\"300\">\n";
for($i=0; $i<$righe; $i++) {
echo "<tr>\n";
for($k=0; $k<$colonne; $k++) {
echo "<td>" ;
echo $vettorechiave[$indice_elenco];
$indice_elenco++;
echo "</td>\n";
}
echo "</tr>\n";
}
<?php
//print_r($vettorefrase);

foreach ($vettorefrase as $value) {
   //echo $value;
}
for($i=97;$i<25+97;$i++){
    if(!in_array(chr($i),$vettorefrase)){
        $vettorefrase[]=chr($i);
    }
}

?>
<table border=1>
<?php
$righe = 5;
$colonne = 5;
$indice_elenco=0;
echo "<table align=\"center\" border=\"1\" width=\"300\">\n";
for($i=0; $i<$righe; $i++) {
echo "<tr>\n";
for($k=0; $k<$colonne; $k++) {
echo "<td>" ;
echo $vettorefrase[$indice_elenco];
$indice_elenco++;
echo "</td>\n";
}
echo "</tr>\n";
}
$frase = str_replace(' ', '', $frase);
$frase=strtolower($frase);
ECHO $frase;
?></table>

</BODY>
</HTML>

risposta inviata 22 Maggio 2017 da Damiano_98 Corsista (47 punti)
Mi pare ottimo ben fatto, dove lo hai fatto girare, su un server locale?
vorrei precisare che è buona norma, in html, mettere i valori degli attributi tra virgolette. Esempio:

<table border="1"> non <table border=1>

potresti obiettare che ha funzionato ugualmente, ma poi in generale rischi che lo script non abbia lo stesso comportamento in tutti i browser.
Salve prof l'ho fatto girare sul server locale, anche se i valori degli attributi non erano tra virgolette funzionava ugualmente adesso lo cambierò grazie.
0 voti
Come funzione da utilzzare per la sostituzione delle accentate, vedrei meglio strreplace.

per aggiungere in coda alla frase, ti suggerisco la concatenazione tramite l'operatore "." o ".="

per il resto continua e vediamo di arrivare alla frase cifrata

Buon Lavoro
risposta inviata 12 Aprile 2017 da tonins Corsista (123 punti)
0 voti
-PAGINA HTML

<HTML>
<BODY>

<FORM ACTION="Cifrario.php"  METHOD="POST">
<INPUT TYPE="Text" NAME="chiave"> chiave <BR>
<INPUT TYPE="Text" NAME="frase"> Inserisci la frase <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 = [];
$pos=[];
$chiave=strtolower($chiave);
$chiave = str_replace(' ', '', $chiave);
$l=0;
$frase=strtolower($frase);
$frase=utf8_encode($frase); //Sostitusce le lettere accentate
$frase = str_replace(' ', '', $frase);
$accenti=array('à','è','é','ì','ò','ù');
$sost=array ('a','e','i','o','u');
$frase=str_replace($accenti,$sost,$frase);
$nc = strlen($chiave);
$nf= strlen($frase);

for($i=0;$i<$nc;$i++){
    
if (!in_array($chiave[$i],$vettorechiave)) {
    $vettorechiave[]=$chiave[$i];
    
    
}
}
echo "La tua chiave era '$chiave'.<br> " ." 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);
    }
}
echo "<br>La frase  -->$frase";
        

?>

<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;

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>" ;

echo $vettorechiave[$indice_elenco];
$indice_elenco++;
$pos[$l]="$i,$k";
$l++;

}

}

?></table>

</BODY>
</HTML>
risposta inviata 13 Aprile 2017 da AlessioTomaselli (27 punti)
ti sei fermato alla tabella, continua dai
0 voti
Html:
<HTML>
<BODY>

<FORM ACTION="Cifrario.php"  METHOD="POST">
<INPUT TYPE="Text" NAME="chiave"> Inserisci la chiave <BR>
<INPUT TYPE="Text" NAME="frase"> Inserisci la frase <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=[];
$pos=[];
$chiave=strtolower($chiave); //Conversione dei caratteri in minuscole/maiuscole
$chiave=str_replace(' ', '', $chiave); //Sostituzione prima stringa con la seconda all'interno della terza
$t=0;
$frase=strtolower($frase);
$frase=utf8_encode($frase); //Sostituzione lettere accentate
$frase = str_replace(' ', '', $frase);
$accenti=array('à','è','é','ì','ò','ù');
$sostituzione=array ('a','e','e','i','o','u');
$frase=str_replace($accenti,$sostituzione,$frase);
$nc=strlen($chiave); //numero di caratteri
$nf= strlen($frase);

for($i=0;$i<$nc;$i++){
    
if (!in_array($chiave[$i],$vettorechiave)) {
    $vettorechiave[]=$chiave[$i];
    
    
}
}
echo "La chiave senza modifiche: '$chiave'.<br> " ." La chiave senza ripetizioni e': ";
foreach ($vettorechiave as $value) {
   echo "$value";
}
for($i=97;$i<25+97;$i++){
    if(!in_array(chr($i),$vettorechiave)){ //Ricerca valore nell'array
        $vettorechiave[]=chr($i);
    }
}
echo "<br>La frase senza accenti, spazi, maiuscole: $frase";
        

?>

<table border=1>

<?php
$righe=5; //Setta il num di righe
$colonne=5; //Setta il num di colonne
$indice_elenco=0;

for($i=0; $i<$righe; $i++) { //Creazione righe
echo "<tr>";
for($y=0; $y<$colonne; $y++) { //Creazione colonne
echo "<td>" ;

echo $vettorechiave[$indice_elenco];
$indice_elenco++;
$pos[$t]="$i,$y";
$t++;

}
}

?></table>

</BODY>
</HTML>
risposta inviata 13 Aprile 2017 da AnnalisaR Corsista (45 punti)
ti sei fermato alla tabella, continua dai
0 voti
-----------------------------------------------------------------

HTML

-----------------------------------------------------------------

<html>
<head>
    <title> Playfair Cipher </title>
</head>
<body>
    <form action="playfair.php" method="POST">
        <h2>Playfair Cipher</h2>
        <input type="text" name="messaggio"> Messaggio <br>
        <input type="text" name="chiave"> Chiave <br>
        <input type="submit" value="Cifra">
        <input type="reset" value="Cancella">
    </form>
</body>
</html>

----------------------------------------------

PHP

-----------------------------------------------

<html>
<head>
<title>Playfair Cipher</title>
</head>
<body>
<?php
//Dichiarazione variabili
$key=$_POST['chiave'];
$message=$_POST['messaggio'];
$key=strtolower($key);
$message=strtolower($message);
$key=str_replace(' ','',$key);
$message=str_replace(' ','',$message);
$key=str_replace('à','a',$key);
$key=str_replace('è','e',$key);
$key=str_replace('ì','i',$key);
$key=str_replace('ò','o',$key);
$key=str_replace('ù','u',$key);
$key=str_replace(',','',$key);
$key=str_replace('.','',$key);
$key=str_replace('-','',$key);
$message=str_replace('à','a',$message);
$message=str_replace('è','e',$message);
$message=str_replace('ì','i',$message);
$message=str_replace('ò','o',$message);
$message=str_replace('ù','u',$message);
$message=str_replace(',','',$message);
$message=str_replace('.','',$message);
$message=str_replace('-','',$message);
$l=strlen($key);
$lm=strlen($message);
$key_array=[];
$r_array=[];
$c_array=[];
$i=0;
$r=5;
$c=5;
$z=0;
$coord1="";
$coord2="";
$coord3="";
$coord4="";
$cipher_message=[];

//Controllo_doppioni
for($i=0;$i<$l;$i++){
    if(!in_array($key[$i],$key_array)){
        $key_array[]=$key[$i];
    }
}

//Inserimento_alfabeto
for($i=97;$i<122;$i++){
    if(!in_array(chr($i),$key_array)){
        $key_array[]=chr($i);
}
}

//Salvataggio_array_coordinate
for($y=1;$y<6;$y++){
    for($x=1;$x<6;$x++){
        $r_array[]=$y;
        $c_array[]=$x;
        }
    }

//Controllo_messaggio
if($lm%2==1){
    $message=$message.'x';
    $lm++;
}

//Stampa_prova_array
echo "Chiave: ";
for($i=0;$i<25;$i++){
    echo $key_array[$i];
}
echo"<br>";
echo "Messaggio: ";
for($i=0;$i<$lm;$i++){
    echo $message[$i];
}
echo "<br>";

//---------------Cifratura------------------

//Scorrimento_messaggio
for($i=0;$i<$lm;$i++){
    
    //Salvataggio_coordinate_1
    for($y=0;$y<25;$y++){
        if($message[$i]==$key_array[$y]){
            $coord1=$r_array[$y];
            $coord2=$c_array[$y];
            $index_y=$y;
            }
    }
    
    //Salvataggio_coordinate_2
    for($x=0;$x<25;$x++){
            if($message[$i+1]==$key_array[$x]){
                $coord3=$r_array[$x];
                $coord4=$c_array[$x];
                $index_x=$x;
            }
    }
    
    //Controllo_orizzontale
    if($coord1==$coord3){
        if($index_y==3 || $index_y==8 || $index_y==13 || $index_y==18 || $index_y==23 && $index_x-$index_y==1){
            $cipher_message[]=$key_array[$index_y+1];
            $cipher_message[]=$key_array[$index_y-3];
        }
        if($index_y==4 || $index_y==9 || $index_y==14 || $index_y==19 || $index_y==24 && $index_y-$index_x==1){
            $cipher_message[]=$key_array[$index_y-4];
            $cipher_message[]=$key_array[$index_y];
        }
        
        //Controllo_indietro
        if($index_y-$index_x==1){
            $cipher_message[]=$key_array[$index_y+1];
            $cipher_message[]=$key_array[$index_y];
        }
        if($index_y-$index_x==2){
            $cipher_message[]=$key_array[$index_y+1];
            $cipher_message[]=$key_array[$index_y-1];
        }
        if($index_y-$index_x==3){
            $cipher_message[]=$key_array[$index_y+1];
            $cipher_message[]=$key_array[$index_y-2];
        }
        if($index_y-$index_x==4){
            $cipher_message[]=$key_array[$index_y-4];
            $cipher_message[]=$key_array[$index_y-3];
        }
        
        //Controllo_avanti
        if($index_x-$index_y==1){
            $cipher_message[]=$key_array[$index_y+1];
            $cipher_message[]=$key_array[$index_y+2];
        }
        if($index_x-$index_y==2){
            $cipher_message[]=$key_array[$index_y+1];
            $cipher_message[]=$key_array[$index_y+3];
        }
        if($index_x-$index_y==3){
            $cipher_message[]=$key_array[$index_y+1];
            $cipher_message[]=$key_array[$index_y+4];
        }
        if($index_x-$index_y==4){
            $cipher_message[]=$key_array[$index_y+1];
            $cipher_message[]=$key_array[$index_y];
        }
            
    }
    
    //Controllo_verticale
    if($coord2==$coord4){
        if($index_y==15 || $index_y==16 || $index_y==17 || $index_y==18 || $index_y==19 && $index_x-$index_y==5){
            $cipher_message[]=$key_array[$index_y+5];
            $cipher_message[]=$key_array[$index_y-15];
        }
        if($index_y==20 || $index_y==21 || $index_y==22 || $index_y==23 || $index_y==24 && $index_y-$index_x==5){
            $cipher_message[]=$key_array[$index_y-20];
            $cipher_message[]=$key_array[$index_y];
        }
        
        //Controllo_basso
        if($index_x-$index_y==5){
            $cipher_message[]=$key_array[$index_y+5];
            $cipher_message[]=$key_array[$index_y+10];
        }
        if($index_x-$index_y==10){
            $cipher_message[]=$key_array[$index_y+5];
            $cipher_message[]=$key_array[$index_y+15];
        }
        if($index_x-$index_y==15){
            $cipher_message[]=$key_array[$index_y+5];
            $cipher_message[]=$key_array[$index_y+20];
        }
        if($index_x-$index_y==20){
            $cipher_message[]=$key_array[$index_y+5];
            $cipher_message[]=$key_array[$index_y];
        }
        
        //Controllo_alto
            if($index_y-$index_x==5){
                $cipher_message[]=$key_array[$index_y+5];
                $cipher_message[]=$key_array[$index_y];
        }
        if($index_y-$index_x==10){
            $cipher_message[]=$key_array[$index_y+5];
            $cipher_message[]=$key_array[$index_y-5];
        }
        if($index_y-$index_x==15){
            $cipher_message[]=$key_array[$index_y+5];
            $cipher_message[]=$key_array[$index_y-10];
        }
        if($index_y-$index_x==20){
            $cipher_message[]=$key_array[$index_y-20];
            $cipher_message[]=$key_array[$index_y-15];
        }
        
    }
    
    //Controllo_rettangolare
    
    //Controllo_avanti
    if($index_x>$index_y){
        if($coord4>$coord2){
            $coord_temp=$coord4-$coord2;
            $cipher_message[]=$key_array[$index_y+$coord_temp];
            $cipher_message[]=$key_array[$index_x-$coord_temp];
        }
        if($coord2>$coord4){
            $coord_temp=$coord2-$coord4;
            $cipher_message[]=$key_array[$index_y-$coord_temp];
            $cipher_message[]=$key_array[$index_x+$coord_temp];
        }
    }
    
    //Controllo_indietro
    if($index_y>$index_x){
        if($coord2>$coord4){
            $coord_temp=$coord2-$coord4;
            $cipher_message[]=$key_array[$index_y-$coord_temp];
            $cipher_message[]=$key_array[$index_x+$coord_temp];
        }
        if($coord4>$coord2){
            $coord_temp=$coord4-$coord2;
            $cipher_message[]=$key_array[$index_y+$coord_temp];
            $cipher_message[]=$key_array[$index_x-$coord_temp];
        }
    }
    $i=$i+1;
}
echo "Messaggio cifrato: ";
for($i=0;$i<$lm;$i++){
echo $cipher_message[$i];
}
?>
</body>
</html>
risposta inviata 14 Aprile 2017 da Cutropi Corsista (57 punti)
queta catena infinita di if, è un approccio non buono per tanti motivi:
-pensa ad un codice un po più complicato...
-non è modificabile. La modifica di uno qualsiasi dei parametri, porterebbe certamente al mancato funzionamento dell'intero script.
-non è scalabile: se aumentassimo le dimensioni...il tutto si complicherebbe in maniera esponenziale
0 voti
Buonasera prof. Scusi per il ritardo della consegna, buone feste.

Html:
<HTML>
<BODY>

<FORM ACTION="Cifrario.php"  METHOD="POST">
<INPUT TYPE="Text" NAME="chiave"> Inserisci la chiave <BR>
<INPUT TYPE="Text" NAME="frase"> Inserisci la frase <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=[];
$pos=[];
$chiave=strtolower($chiave); //Conversione dei caratteri in minuscole/maiuscole
$chiave=str_replace(' ', '', $chiave); //Sostituzione prima stringa con la seconda all'interno della terza
$t=0;
$frase=strtolower($frase);
$frase=utf8_encode($frase); //Sostituzione lettere accentate
$frase = str_replace(' ', '', $frase);
$accenti=array('à','è','é','ì','ò','ù');
$sostituzione=array ('a','e','e','i','o','u');
$frase=str_replace($accenti,$sostituzione,$frase);
$nc=strlen($chiave); //numero di caratteri
$nf= strlen($frase);

for($i=0;$i<$nc;$i++){
    
if (!in_array($chiave[$i],$vettorechiave)) {
    $vettorechiave[]=$chiave[$i];
    
    
}
}
echo "La chiave senza modifiche: '$chiave'.<br> " ." La chiave senza ripetizioni e': ";
foreach ($vettorechiave as $value) {
   echo "$value";
}
for($i=97;$i<25+97;$i++){
    if(!in_array(chr($i),$vettorechiave)){ //Ricerca valore nell'array
        $vettorechiave[]=chr($i);
    }
}
echo "<br>La frase senza accenti, spazi, maiuscole: $frase";
        

?>

<table border=1>

<?php
$righe=5; //Setta il num di righe
$colonne=5; //Setta il num di colonne
$indice_elenco=0;

for($i=0; $i<$righe; $i++) { //Creazione righe
echo "<tr>";
for($y=0; $y<$colonne; $y++) { //Creazione colonne
echo "<td>" ;

echo $vettorechiave[$indice_elenco];
$indice_elenco++;
$pos[$t]="$i,$y";
$t++;

}
}

?></table>

</BODY>
</HTML>
risposta inviata 15 Aprile 2017 da Simon97 (21 punti)
0 voti
Buongiorno professore e scusi il ritardo, ho cercato in tutti i modi di riuscire a completarlo tutto però purtroppo non sono in grado di farlo funzionare e riesco a farlo fino alla visualizzazione della tabella soltanto, spero che al rientro delle vacanze con l'aiuto suo e anche di qualche mio compagno riesco a capirlo e a finirlo, le mando fino a dove sono arrivato:

-----HTML-----

<HTML>
<BODY>

<FORM ACTION="cifrario.php"  METHOD="POST">
<INPUT TYPE="Text" NAME="chiave"> chiave <BR>

<INPUT TYPE="Submit" VALUE="invia">
<INPUT TYPE="Reset" VALUE="cancella">

</FORM>

</BODY>
</HTML>

-----PHP-----

<HTML>
<BODY>

<?php
     
$chiave=$_POST['chiave'];
$vettorechiave = [];
$chiave=strtolower($chiave);
$chiave = str_replace(' ', '', $chiave);
$n = strlen($chiave);

for($i=0;$i<$n;$i++){
    
if (!in_array($chiave[$i],$vettorechiave)) {
echo    $vettorechiave[]=$chiave[$i];
    
    
}
}
print_r($vettorechiave);
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
$righe = 5;
$colonne = 5;
$indice_elenco=0;
//echo "<table align=\"center\" border=\"1\" width=\"300\">\n";
for($i=0; $i<$righe; $i++) { // 1^ ciclo creo righe
echo "<tr>\n";
for($k=0; $k<$colonne; $k++) { // 2^ ciclo creo le col
echo "<td>" ;
echo $vettorechiave[$indice_elenco];
$indice_elenco++;
echo "</td>\n";
}
echo "</tr>\n";
}

?></table>

</BODY>
</HTML>
risposta inviata 15 Aprile 2017 da francidl Corsista (44 punti)
0 voti
Prof le inoltro l'esercizio.
HTML:

<html>
<body>
<form action="cifrario_orosa.php" method='POST'>
Chiave <input type="text" name="chiave"> <br>
<input type="submit" value="Invia">
<input type="reset" value="Cancella">
</form>
</body>
</html>

PHP:

<html>
<body>
<?php
$chiave=$_POST["chiave"];
$chiavearray=[];
$chiave=strtolower($chiave);
$chiave=str_replace(' ','',$chiave);
$n=strlen($chiave);
$x=0;
for($i=0;$i<$n;$i++){
  if(!in_array($chiave[$i],$chiavearray)){
    $arraychiave[]=$chiave[$i];
    }
}

for($i=97;$i<122;$i++){
  if(!in_array(chr($i),$arraychiave)){
    $arraychiave[]=chr($i);
    }
}
?>
<table align=center border=1 width=400>
<?php
for($i=0;$i<5;$i++){
  echo "<tr>";
  for($y=0;$y<5;$y++){
    echo "<td>".$arraychiave[$x]."</td>";
    $x=$x+1;
    }
}
?>

</table>

</body>
</html>
risposta inviata 15 Aprile 2017 da FreyaAurora (31 punti)
modificato 21 Aprile 2017 da FreyaAurora

Domande correlate

+1 voto
1 risposta
quesito posto 6 Aprile 2017 in Informatica da tonins Corsista (123 punti) | 383 visite
+2 voti
5 risposte
quesito posto 20 Marzo 2013 in Classe terza da Emanuele Rizzo Esperto (238 punti) | 345 visite
0 voti
0 risposte
quesito posto 10 Ottobre 2018 in Classe terza da Gianni Messina Esperto (736 punti) | 454 visite
777 domande
1,565 risposte
639 commenti
1,445 utenti