Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania
Viewing all articles
Browse latest Browse all 65225

Php zapis i odczyt z pliku

$
0
0

Witam

Odrazu mówię, że pytanie jest długie ^^ Mam 2 programy, które muszę zrobić na lekcję, a z PHP jestem całkowicie ciemny.

1. Ogólnie coś w formie komentarzy. Wpisuje w pole tekstowe komentarz i ma się on wyświetlić poniżej.

Oto mój kod

html

<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="utf-8" />
	<title> Tytuł </title>
	<meta charset="UTF-8">
	<meta name="description" content="Projekty">
	<meta name="keywords" content="Projekty">
	<meta name="author" content="Damian Kurkiew">	
</head>
<body >
	<form action="zapisywanie.php" method="post">
	
	Komentarz <br>
	<textarea name="komentarz" cols="x" rows="y" placeholder="Tu wpisz tekst który pojawi się domyślnie"></textarea>
	
	<input type="submit" value="Wyślij">
	<input type="reset" value="Wyczyść">
	</form>
	<?php
	echo "Komentarz <br>";
	if(file_exists("test.txt")==false)
		touch("test.txt");
	else
	{
		$plik = fopen('test.txt', 'r');
		$rozmiar = filesize('test.txt');
		if(empty($rozmiar)) echo "";
		else
		{
			$linia = "";
			while(!feof($plik))
			{
				$linia = fgets($plik, 2048); 
				echo $linia;
			}				
		}
	}
	?>
</body>
</html>

Php

<?php
	if(isSet($_POST['komentarz']))
	{
		$plik = fopen('test.txt', 'a');
		$komentarz = $_POST['komentarz']."\r\n";
		fwrite($plik,$komentarz);
	}
	
	else 
		echo "Komentarz nie wpisany";
	include('index.php');
?>

Po każdym odświeżeniu strony dodawany jest do pliku tekstowego ten sam komentarz, który wpisałem wcześniej. Ponadto wczytuje mi wszystko w jednej linii zamiast tak jak w pliku tekstowym.

2. Drugi program to system logowania z pliku. Wprowadzamy login hasło, a moduł php sprawdza czy dane zgadzają się z zawartością w pliku.

html

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8"/>
<meta name="author" content=""/>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
</head>
<body>
<form action="przekazywanie.php" method="post"/>
	<div style="margin-left:40%">
	<table style="border: 1px solid">
		<tr>
			<td  style="border: 1px solid"> <input type="text" name="name" placeholder="login">
		</tr>
		<tr>
			<td  style="border: 1px solid"> <input type="password" name="pass" placeholder="password">
		</tr>
	</table>
	<input type="submit" value="Wyślij">
   </div>
 
 </form>
    
    </body>
</html>
<?php
	$user = $_POST['name'];
	$pass = $_POST['pass'];
	
	if(!($plik = fopen("test.txt", "r")))
		echo 'Błąd logowania <a href="index.php"> Powrót do logowania </a>';
	else
	{
		function checkPass($pass,$user)
		{
			$plik = fopen("test.txt", "r");
		echo "Plik otworzony <br>";
		while(!feof($plik))
		{
			$line = trim(fgets($plik));
			echo $line;
			if($pos=strpos($line, ":")===false) 
				continue;
			
			$tempUser = substr($line , $pos);
			if($tempUser != $user) continue;
			
			$tempUser = substr($line, $pos + 1, strlen($line) - $pos);
			echo $tempUser;
			if($tempUser != $pass) continue;
			else return false;
		}
		}
		
			if(checkPass($pass, $user)==false) echo "Niepoprawne logowanie";
			else echo "Użytkownik " .$user." zostal zalogowany";
	}	
?>

Plik tekstowy

Admin:Admin
Marek:Marek1
Adam:Adam1
User:User1

Najpierw login, a po dwukropku hasło. Zmienna $tempUser jest czysta, nic nie jest do niej przypisywane. Nie wiem czemu. Kod dla mnie wgl jest jakiś dziwny. Jeżeli funkcja fgets() wczytuje nam po linijce ( czy każdą literę osobno? ) to wyświetlając zmienną $line wyświetla ona nam cały ciąg znaków z pliku. Czyli funkcja strpos() nie ma w tym przypadku sensu.

I tu proszę o objaśnienia jak działa dokładnie ta funkcja fgets() i jak najlepiej w tym przypadku wczytywać z pliku ta dane, aby logowanie działało poprawnie.


Viewing all articles
Browse latest Browse all 65225


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>