Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] prosty skrypt dodawania treści do pliku, problem
axwell
post
Post #1





Grupa: Zarejestrowani
Postów: 143
Pomógł: 1
Dołączył: 14.11.2007

Ostrzeżenie: (10%)
X----


  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ą
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Moli
post
Post #2





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. <?php
  2. if(strlen($_GET['numer'])==&& strlen($_GET['pass'])>=8)
  3. ?>
Go to the top of the page
+Quote Post
axwell
post
Post #3





Grupa: Zarejestrowani
Postów: 143
Pomógł: 1
Dołączył: 14.11.2007

Ostrzeżenie: (10%)
X----


  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. ?>
Go to the top of the page
+Quote Post
b_chmura
post
Post #4





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


  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"

Ten post edytował b_chmura 18.11.2007, 17:00:54
Go to the top of the page
+Quote Post
axwell
post
Post #5





Grupa: Zarejestrowani
Postów: 143
Pomógł: 1
Dołączył: 14.11.2007

Ostrzeżenie: (10%)
X----


No niestety ani ten ani bez "/n" nie działa, wpisy i tak się dodają, zastanawiam się czemu.
Go to the top of the page
+Quote Post
b_chmura
post
Post #6





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
axwell
post
Post #7





Grupa: Zarejestrowani
Postów: 143
Pomógł: 1
Dołączył: 14.11.2007

Ostrzeżenie: (10%)
X----


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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
b_chmura
post
Post #8





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


tutaj Twoją bazą będzie zwykły plik
Go to the top of the page
+Quote Post
axwell
post
Post #9





Grupa: Zarejestrowani
Postów: 143
Pomógł: 1
Dołączył: 14.11.2007

Ostrzeżenie: (10%)
X----


no dobra przekonałeś mnie i żeczywiśćie tak zrobię (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale naprawde z tamtą funkcją if nie da rady nic zrobić ? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
b_chmura
post
Post #10





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


rzeczywiście*

spróbuj jeszcze dać == zamiast ===
Go to the top of the page
+Quote Post
axwell
post
Post #11





Grupa: Zarejestrowani
Postów: 143
Pomógł: 1
Dołączył: 14.11.2007

Ostrzeżenie: (10%)
X----


z == żadnego wpisu niedodaje
Go to the top of the page
+Quote Post
b_chmura
post
Post #12





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


mój błąd, daj !=
Go to the top of the page
+Quote Post
axwell
post
Post #13





Grupa: Zarejestrowani
Postów: 143
Pomógł: 1
Dołączył: 14.11.2007

Ostrzeżenie: (10%)
X----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował axwell 18.11.2007, 22:10:56
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.09.2025 - 23:43