Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak usunąć konkretny ciąg znaków w danym pliku!?
Forum PHP.pl > Forum > Przedszkole
xrayPL
Witam!

w pliku bazy danych; np. bazadanych.php
umieszczam coś takiego


<?
$tablica[login] = hasło
?>

gdzie login i hasło pobrane są z formularza. Kiedy user będzię chciał usunąć swoje "konto" czyli swój kawałek tablicy (jeden login i przyporządkowane mu hasło) skrypt powinien mu to umożliwić.
User bedzie musiał podać login haslo i je powtórzyć w formularzu i z tym i całą walidacją danych sobie poradziłem.
Ale teraz mam pytanie jak wyszukać wiersz (nieważne czy ciąg znaków czy rozpoznając dablice) z tego pliku?
można linijkę "$tablica[login] = hasło" potraktowac jako zwykły tekst wyszukać go i zastąpić np spacją albo w ogóle ten wiersz usunąć. Nie gra roli.
Mógłby ktoś powiedzieć czy i jak to jest możliwe, bo szukam po googlach i forum i znajduje coś bliskiego, ale nie dokonca to o co mi chodzi!

I DRUGIE PYTANIE
mam tablice $tablica[nazwa] = wartość, jak wyświetlić (odczytać) same nazwy bez pokazywania i ujawniania wartości...

Z góry dzięki!
Pozdrawiam!
Fifi209
Pytanie 1:
file,explode ,unset, file_put_content

Pytanie 2:
array_keys
xrayPL
Cytat(fifi209 @ 5.08.2010, 19:43:55 ) *



Dziekuje za odpowiedź!
ad 2: rozumiem i chyba sobie poradze!

ad 1: znam te funkcje używałem ich wcześniej, ale właśnie w stronę usuwania lini pliku nie zabardzo wiem jak to ze sobą poskładać...
może jakaś podpowiedź?
Fifi209
  1. <?php
  2.  
  3. $file = file('text.txt');
  4.  
  5. $users = array();
  6.  
  7. for ($i=0; $i < count($file); $i++) {
  8. $temp = explode('=', $file[$i]);
  9. $users[trim($temp[0])] = trim($temp[1]);
  10. }
  11.  
  12. $user = 'hjk';
  13. $pass = 6;
  14.  
  15. echo '<pre>';
  16. print_r($users);
  17. echo '</pre>';
  18.  
  19. foreach ($users as $key => $val) {
  20. if ($key == $user && $val == $pass) {
  21. unset($users[$key]);
  22. }
  23. }
  24.  
  25. echo '<pre>';
  26. print_r($users);
  27.  
  28. ?>


Plik text.txt
Kod
qwe = 1
rty = 2
uio = 3
pas = 4
dfg = 5
hjk = 6
lzx = 7
cvb = 8


Z zapisem sobie raczej poradzisz...

Źle przeczytałem, a to że w pliku .php ma raczej znaczenie ;p

[PHP] dane.php - pobierz, plaintext
  1. <?php
  2.  
  3. $tablica['qwe'] = 1;
  4. $tablica['rty'] = 2;
  5. $tablica['uio'] = 3;
  6. $tablica['pas'] = 4;
  7. $tablica['dfg'] = 5;
  8. $tablica['hjk'] = 6;
  9. $tablica['lzx'] = 7;
  10. $tablica['cvb'] = 8;
  11.  
  12. ?>
[PHP] dane.php - pobierz, plaintext


A teraz czytanie i usuwanie:
  1. <?php
  2.  
  3. $file = file_get_contents('dane.php');
  4.  
  5. preg_match_all('#\$[a-z]+\[\'([a-z]+)\'\] = (.*?);#', $file, $matches);
  6.  
  7. $users = array();
  8. for ($i=0; $i < count($matches[0]); $i++) {
  9. $users[$matches[1][$i]] = $matches[2][$i];
  10. }
  11.  
  12.  
  13. $user = 'hjk';
  14. $pass = 6;
  15.  
  16. echo '<pre>';
  17. print_r($users);
  18. echo '</pre>';
  19.  
  20. foreach ($users as $key => $val) {
  21. if ($key == $user && $val == $pass) {
  22. unset($users[$key]);
  23. }
  24. }
  25.  
  26. echo '<pre>';
  27. print_r($users);
  28.  
  29. ?>
xrayPL
Cytat(fifi209 @ 5.08.2010, 23:25:15 ) *
  1. <?php
  2.  
  3. $file = file('text.txt');
  4.  
  5. $users = array();
  6.  
  7. for ($i=0; $i < count($file); $i++) {
  8. $temp = explode('=', $file[$i]);
  9. $users[trim($temp[0])] = trim($temp[1]);
  10. }
  11.  
  12. $user = 'hjk';
  13. $pass = 6;
  14.  
  15. echo '<pre>';
  16. print_r($users);
  17. echo '</pre>';
  18.  
  19. foreach ($users as $key => $val) {
  20. if ($key == $user && $val == $pass) {
  21. unset($users[$key]);
  22. }
  23. }
  24.  
  25. echo '<pre>';
  26. print_r($users);
  27.  
  28. ?>


Plik text.txt
Kod
qwe = 1
rty = 2
uio = 3
pas = 4
dfg = 5
hjk = 6
lzx = 7
cvb = 8


Z zapisem sobie raczej poradzisz...

Źle przeczytałem, a to że w pliku .php ma raczej znaczenie ;p

[PHP] dane.php - pobierz, plaintext
  1. <?php
  2.  
  3. $tablica['qwe'] = 1;
  4. $tablica['rty'] = 2;
  5. $tablica['uio'] = 3;
  6. $tablica['pas'] = 4;
  7. $tablica['dfg'] = 5;
  8. $tablica['hjk'] = 6;
  9. $tablica['lzx'] = 7;
  10. $tablica['cvb'] = 8;
  11.  
  12. ?>
[PHP] dane.php - pobierz, plaintext


A teraz czytanie i usuwanie:
  1. <?php
  2.  
  3. $file = file_get_contents('dane.php');
  4.  
  5. preg_match_all('#\$[a-z]+\[\'([a-z]+)\'\] = (.*?);#', $file, $matches);
  6.  
  7. $users = array();
  8. for ($i=0; $i < count($matches[0]); $i++) {
  9. $users[$matches[1][$i]] = $matches[2][$i];
  10. }
  11.  
  12.  
  13. $user = 'hjk';
  14. $pass = 6;
  15.  
  16. echo '<pre>';
  17. print_r($users);
  18. echo '</pre>';
  19.  
  20. foreach ($users as $key => $val) {
  21. if ($key == $user && $val == $pass) {
  22. unset($users[$key]);
  23. }
  24. }
  25.  
  26. echo '<pre>';
  27. print_r($users);
  28.  
  29. ?>


czyli teraz zapisać tylko users i tyle? i rozumiem ze skrypt ten usuwa podany $user i $pass??
Fifi209
a i owszem smile.gif
xrayPL
Cytat(fifi209 @ 6.08.2010, 01:57:29 ) *
a i owszem smile.gif

bardzo mi pomogles!

jednak wymyslilem krótszą wersje!

  1. $tresc = file_get_contents("checkdisk.php");
  2.  
  3. $szukana = "\$dane_user[" . $login . "] = \"" . $pass . "\""; //wyszukuje szukany skrypt tablicy
  4. $usuwacz = "\$usunieto = \"" . date("Y-m-d H:i:s") . " " . $login . "\""; //tresc zastepujaca tresc tablicy
  5. $wynik = str_replace($szukana, $usuwacz, $tresc); //wiadomo
  6.  
  7. $otwieracz = fopen($plik, "r+"); //wiadomo
  8. $ok = fwrite($otwieracz, $wynik); //zapisuje date i login usuniety $plik
  9. echo "ZMIENIONO: " . $ok . " bajtów!<br>"; //zwraca ilosć zapisanych bajtów
  10. echo "Usunięcie konta przebiegło pomyslnie";
  11. fclose($plik);
  12.  
Fifi209
Pokaż swój kod, bo moje oba zaprezentowane kody działają.
xrayPL
Cytat(fifi209 @ 6.08.2010, 14:05:08 ) *
Pokaż swój kod, bo moje oba zaprezentowane kody działają.


widze ze odp jak modyfikowalem:)
  1.  
  2. #
  3. $tresc = file_get_contents("checkdisk.php");
  4. #
  5.  
  6. #
  7. $szukana = "\$dane_user[" . $login . "] = \"" . $pass . "\""; //wyszukuje szukany skrypt tablicy
  8. #
  9. $usuwacz = "\$usunieto = \"" . date("Y-m-d H:i:s") . " " . $login . "\""; //tresc zastepujaca tresc tablicy
  10. #
  11. $wynik = str_replace($szukana, $usuwacz, $tresc); //wiadomo
  12. #
  13.  
  14. #
  15. $otwieracz = fopen($plik, "r+"); //wiadomo
  16. #
  17. $ok = fwrite($otwieracz, $wynik); //zapisuje date i login usuniety $plik
  18. #
  19. echo "ZMIENIONO: " . $ok . " bajtów!<br>"; //zwraca ilosć zapisanych bajtów
  20. #
  21. echo "Usunięcie konta przebiegło pomyslnie";
  22. #
  23. fclose($plik);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.