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.