Cześć!
Fragment kodu, który niżej zamieszczę wykorzystywany jest przy generowaniu szyfru jednorazowego: https://pl.wikipedia.org/wiki/Szyfr_z_kluczem_jednorazowym
To tyle z teorii, po prostu chciałem abyście wiedzieli do czego kod jest wykorzystywany. Problem jaki napotkałem nie wydaje mi się trudny, jednakże jest dla mnie strasznie uciążliwy.
Generalnie jeżeli użytkownik poda jakąś treść na pierwszej stronie to powinna się ona wyświetlić w alercie, wyświetla się jedynie wtedy gdy długość treści w pliku jest dłuższa niż wprowadzonego hasła. Gdy pliku na serwerze nie ma bądź jego długość jest nie wystarczająca to prawidłowo plik się nadpisuje, jednakże czemu alert nie jest wyświetlany? W jaki sposób sprawić aby po nadpisaniu pliku alert się wyświetlał?
Nie chciałem wklejać zbyt dużo kodu, alert jest przykładem. Do przepisanej zmiennej z PHP do JS używam ich do generowania szyfrowania i ostatecznie pobrania zaszyfrowanego klucza, żadna z tych metod nie działa gdyż ze zmiennych z PHP nie zostało nic przekazane.
Co pominąłem? Czy można jakoś łatwo rozwiązać problem po nadpisywaniu pliku?
Plik index,php
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"/>
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
</head>
<body>
<div class="container">
<form action="pokaz.php" method="post">
<div>
<input id="areaHaslo" style="width:400px" name="areaHaslo" placeholder="Wpisz cos tutaj..." />
</div>
<div style="margin-top:10px;margin-bottom:30px">
<button style="text-align:center;" type="submit" class="btn btn-success">Wygeneruj plik</button>
</div>
</form>
</div>
</body>
</html>
Plik pokaz.php
<?php
$haslo = $_POST["areaHaslo"];
$hasloLength = strlen($haslo)*7;
if (isset($_POST["areaHaslo"]) && !empty($_POST["areaHaslo"])) {
if((file_exists("binary.txt")==false)) {
$myfile = fopen("binary.txt", "w");
$txt="";
for( $x = 1; $x <= 10486000; $x++ ) {
$txt .= rand(0, 1);
}
fwrite($myfile, $txt);
fclose($myfile);
} else {
$fp = fopen("binary.txt", "r");
$allBinaryText = fread($fp, 10486000);
if(strlen($allBinaryText)+5<$hasloLength) {
$txt1="";
for( $i = 1; $i <= 10486000; $i++ ) {
$txt1 .= rand(0, 1);
}
$fp = fopen("binary.txt", "w");
fwrite($fp, $txt1);
fclose($fp);
} else {
$fp1 = fopen("binary.txt", "r");
$calosc = fread($fp1, 10486000);
$txt2 = strrev($calosc);
$ostatni = "";
for( $x = 0; $x < $hasloLength; $x++ )
$ostatni .= $txt2[$x];
$Maska = strrev($ostatni);
$newMainFile = substr(strrev($allBinaryText),strlen($ostatni)+5);
$myMainfile = fopen("binary.txt", "w");
fwrite($myMainfile, strrev($newMainFile));
fclose($myMainfile);
}
}
}
?>
<script type="text/javascript">
zmienna = <?php echo json_encode($haslo); ?>;
zmienna2 = <?php echo json_encode($Maska); ?>;
alert(zmienna);
alert(zmienna2);
</script>