Wyświetlanie treści przy odpowiednim nadpisywaniu pliku na serwerze

Wyświetlanie treści przy odpowiednim nadpisywaniu pliku na serwerze
JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 105
0

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

Kopiuj
<!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

Kopiuj
<?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>
MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 644
0

Pomijając jakość kodu (polskie nazwy, mnóstwo powtórzeń), pokaż źródło strony po wypełnieniu formularza w przypadku gdy alter się nie wyświetla albo otwórz konsolę (w przeglądarce) i przeczytaj błędy - bo podejrzewam, że dlatego się nie wyświetla.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0
Kopiuj
zmienna = <?php echo json_encode($haslo); ?>;

Brakło Ci tutaj cudzysłowów:

Kopiuj
zmienna = "<?= json_encode($haslo) ?>";
JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 105
0
Markuz napisał(a):

Pomijając jakość kodu (polskie nazwy, mnóstwo powtórzeń), pokaż źródło strony po wypełnieniu formularza w przypadku gdy alter się nie wyświetla albo otwórz konsolę (w przeglądarce) i przeczytaj błędy - bo podejrzewam, że dlatego się nie wyświetla.

Kod pisany na szybko "aby działał", polskie nazwy są do poprawy.
Przy braku pliku na serwerze pojawia się błąd taki:

"SyntaxError: expected expression, got '<'"
Tyle wiecej mogę zobaczyć po wejściu w przeglądarkę:

Kopiuj
"<br />
<b>Notice</b>:  Undefined index: areaHaslo in <b>C:\xampp\htdocs\Jednorazowy\test\pokaz.php</b> on line <b>2</b><br />
<script type="text/javascript">
zmienna = null;
zmienna2 = <br />
<b>Notice</b>:  Undefined variable: Maska in <b>C:\xampp\htdocs\Jednorazowy\test\pokaz.php</b> on line <b>43</b><br />
null;
alert(zmienna);
alert(zmienna2);"
Patryk27 napisał(a):
Kopiuj
zmienna = <?php echo json_encode($haslo); ?>;

Brakło Ci tutaj cudzysłowów:

Kopiuj
zmienna = "<?= json_encode($haslo) ?>";

Zapis z cudzysłowiami jest nieprawidłowy i powoduje nie wyświetlanie się żadnych wartości, to nie jest raczej to.

Myślę że problem jest tego typu, że gdy pliku nie ma/jest prawie że pusty - jest wtedy generowany. Nie wiem czemu ale zmienne które przekazuję z PHP do zmiennych w js przekazują się przed wygenerowaniem pliku więc są po prostu puste. Nie jestem w stanie uchwycić momentu aby przypisały się dopiero po wygenerowaniu pliku.
Jednakże hasło powinno przejść bez względu na to czy plik był wygenerowany czy też nie, maska już nie koniecznie, jednakże obie zmienne się nie aktualizują.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.