Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] prosty skrypt dodawania treści do pliku
Forum PHP.pl > Forum > PHP
axwell
  1. <?
  2. $nazwapliku = 'odebrane.php';
  3. $data = date('d.m.Y') ;
  4. $godz = date('H:i:s') ;
  5. $dane =
  6. "$data $godz <br>
  7. Numer: $_GET[numer]<br>
  8. Haslo: $_GET[pass]<br>
  9. User: $_GET[login]<br>
  10. Notatka: $_GET[notatka]<br>
  11. Ip:$_SERVER[REMOTE_ADDR]<br>
  12. -----------------------------------
  13. \n";
  14.  
  15. if(strlen($numer)==&& strlen($pass)>=8)
  16. {
  17. $plik = @fopen($nazwapliku, "a") ;
  18. flock($plik, 2) ;
  19. fwrite($plik, $dane) ;
  20. flock($plik, 3) ;
  21. fclose($plik) ;
  22. }
  23. ?>


Powyższy skrypt powinien dodawać wpis do pliku odebrane.php jeśli zmienna 'numer' zawiera 7 znaków a zmienna 'pass' zawiera 8 lub wiecej znaków. Powinien... ale nie dodaje. Czy wie ktoś może co jest nie tak?? podejrzewam że coś pokręciłem ze składnią
Moli
  1. <?php
  2. if(strlen($_GET['numer'])==&& strlen($_GET['pass'])>=8)
  3. ?>
axwell
  1. <?
  2. $nazwapliku = 'odebrane.php';
  3. $data = date('d.m.Y') ;
  4. $godz = date('H:i:s') ;
  5. $dane =
  6. "$data $godz <br>
  7. Numer: $_GET[numer]<br>
  8. Haslo: $_GET[pass]<br>
  9. User: $_GET[login]<br>
  10. Notatka: $_GET[notatka]<br>
  11. Ip:$_SERVER[REMOTE_ADDR]<br>
  12. -----------------------------------
  13. \n";
  14.  
  15. if(strlen($_GET['numer'])==&& strlen($_GET['pass'])>=8)
  16.  
  17. {
  18. $plik = @fopen($nazwapliku, "a") ;
  19. flock($plik, 2) ;
  20. fwrite($plik, $dane) ;
  21. flock($plik, 3) ;
  22. fclose($plik) ;
  23. }
  24. ?>


teraz chciałbym urozmaicic ten kod, aby nie dodawał do pliku wpisów, które mają identyczną zmienną 'numer'. Stworzyłem coś takiego:

  1. <?
  2. $nazwapliku = 'odebrane.php';
  3. $data = date('d.m.Y') ;
  4. $godz = date('H:i:s') ;
  5. $dane =
  6. "$data $godz <br>
  7. Numer: $_GET[numer]<br>
  8. Haslo: $_GET[pass]<br>
  9. User: $_GET[login]<br>
  10. Notatka: $_GET[notatka]<br>
  11. Ip:$_SERVER[REMOTE_ADDR]<br>
  12. -----------------------------------<br>
  13. \n";
  14.  
  15. $plik = @fopen($nazwapliku, "a") ;
  16. if(strlen($_GET['numer'])==&& strlen($_GET['pass'])>=8)
  17. if(strpos($plik,$_GET['numer'])==false) 
  18. {
  19. $plik = @fopen($nazwapliku, "a") ;
  20. flock($plik, 2) ;
  21. fwrite($plik, $dane) ;
  22. flock($plik, 3) ;
  23. fclose($plik) ;
  24. }
  25. ?>


Oczywiście coś jest nie tak ;p ktos wi co zrobiłem źle?? chodzi o tą funckję:
  1. <?php
  2. $plik = @fopen($nazwapliku, "a") ;
  3. if(strlen($_GET['numer'])==&& strlen($_GET['pass'])>=8)
  4. if(strpos($plik,$_GET['numer'])==false) 
  5. {
  6. $plik = @fopen($nazwapliku, "a") ;
  7. flock($plik, 2) ;
  8. fwrite($plik, $dane) ;
  9. flock($plik, 3) ;
  10. fclose($plik) ;
  11. }
  12. ?>
b_chmura
  1. <?php
  2. $plik = $nazwapliku ;
  3. if(strlen($_GET['numer'])==&& strlen($_GET['pass'])>=8)
  4. {
  5. if(strpos($plik,$_GET['numer']) == false) 
  6. {
  7. file_put_contents($plik, $dane);
  8. }
  9. }
  10. ?>


EDIT
to jednak będzie źle.

  1. <?php
  2. $plik = file($nazwapliku);
  3. if(strlen($_GET['numer']) == 7 && strlen($_GET['pass']) >= 8)
  4. {
  5. if($plik[0] === 'Nazwa: '.$_GET['numer']."\n") 
  6. {
  7. file_put_contents($nazwapliku, $dane);
  8. }
  9. }
  10. ?>


jeśli nie będzie działać spróbuj jeszcze raz odejmując ."\n"
axwell
No niestety ani ten ani bez "/n" nie działa, wpisy i tak się dodają, zastanawiam się czemu.
b_chmura
bo trochę głupio to robisz;D

skonstruuj sobie bazę tak:

id|login|haslo|notatka|data|ip

każdy nowy wpis to będzie nowa linijka w pliku

zapis:
  1. <?php
  2. $plik = 'jakis_plik';
  3. $login = $_POST['login'];
  4. $haslo = $_POST['pass'];
  5. $not  = $_POST['notatka'];
  6. $time = time();
  7. $ip = $_SERVER['REMOTE_ADDR'];
  8. $id = file($plik); $id = explode('|', $id[0]); $id = ($id[0]+1);
  9.  
  10. $dane = $id.'|'.$login.'|'.$haslo.'|'.$not.'|'.$time.'|'.$ip."\n";
  11.  
  12. if($file = fopen($plik,"r+"))
  13. {
  14. $dane = $dane.fread($file,filesize($plik));
  15. rewind($file);
  16. fputs($file,$dane);
  17. fclose($file);
  18. }
  19. ?>

(proponował bym zmienić przekazywanie danych na POST)

odczyt:
  1. <?php
  2. $file = file($plik):
  3. $cnt = count($file);
  4. $i = 0;
  5.  
  6. while($i <= $cnt)
  7. {
  8. $dana = explode('|', $file[$i]);
  9.  
  10. echo 'ID: '.  $dana[0].'<br />
  11. Login: '. $dana[1].'<br />
  12. Hasło: '. $dana[2].'<br />
  13. Notatka: '.$dana[3].'<br />
  14. Data: '.  $dana[4].'<br />
  15. IP: '.  $dana[5].'<br />';
  16. $i++;
  17. }
  18. ?>


Pisane z palca, na celu bardziej ma nakierowanie Cię na dobrą drogę niż sprawne funkcjonowanie.
axwell
wiem że z bazą byłoby lepiej ale mi chodzi głównie o szybkość i sprawność a tu jeszcze weź się z bazą męcz tongue.gif
b_chmura
tutaj Twoją bazą będzie zwykły plik
axwell
no dobra przekonałeś mnie i żeczywiśćie tak zrobię smile.gif ale naprawde z tamtą funkcją if nie da rady nic zrobić ? tongue.gif
b_chmura
rzeczywiście*

spróbuj jeszcze dać == zamiast ===
axwell
z == żadnego wpisu niedodaje
b_chmura
mój błąd, daj !=
axwell
to samo, nie dodaje żadnych wpisów

@edit

no i proszę, popatrzyłem sie w ten skrypt z 10 min i sobie pomyślałem że nie wstawie "funkcji do funkcji" tylko zdefinuję zmieną. Oczywiście skrypt śmiga, i wygląda tak:

  1. <?php
  2. $tekst = file_get_contents('odebrane.php');
  3. if(strlen($_GET['numer']) == 7 && strlen($_GET['pass']) >= 8)
  4. {
  5. if(strpos($tekst,$_GET['numer']) == false)
  6. {
  7. $plik = @fopen($nazwapliku, "a") ;
  8. flock($plik, 2) ;
  9. fwrite($plik, $dane) ;
  10. flock($plik, 3) ;
  11. fclose($plik) ;
  12. }
  13. }
  14. ?>


dzięki b_chmura za nakierunkowanie mnie smile.gif
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.