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.