Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapis do pliku z usuwaniem linii
Forum PHP.pl > Forum > PHP
Aimar
Witam,
Napisałem pewien skrypt rejestracji (zew. formularz dla IPB) działający poprzez RSS ... trochę to prymitywne, ale działa... z tym że jest mały problem winksmiley.jpg

Wygląda to tak, że forum działa na .htapass więc nie ma dostępu do rejestracji, dlatego stworzyłem prosty formularz (na zew. serwerze), który wypełnione pola zapisuje do pliku .xml z formatowaniem na styl kanału rss.
Następnie w IPB uruchomiłem import danych z tego rss i wszystko wygląda pięknie, ale tylko przy pierwszym wpisie, ponieważ:


  1. <?php
  2. if (isset($_POST['username']))
  3. {
  4.  $blad='';
  5.  if (strlen($_POST['password'])<|| strlen($_POST['password'])>200) $blad.='Za krotkie haslo. Haslo Powinno zawierac min 7 znakow.<br>';
  6.  if (strlen($_POST['username'])<3) $blad.='Za krotka nazwa uzytkownika. Min to 4 znaki<br>';
  7.  if (!ereg ("^.+@.+..+$", $_POST['email'])) $blad.='Podano niepoprawny adres e-mail<br>';
  8.  if ($blad!='') info($blad,'red');
  9.  else
  10.  {
  11. $post = " <-- tresc -->";
  12. flock($rejestracje, LOCK_EX);
  13. fputs($rejestracje, "$post");
  14. flock($rejestracje, LOCK_UN);
  15. fclose($rejestracje);
  16. info('Formularz został zapisany.', 'green');
  17. return;
  18.  }
  19. }
  20. ?>


Dane są zapisywane od ostatniej linii... podczas gdy ostatnią linią musi być </channel></rss> ...
Zapisanie tego przy każdym kolejnym wpisie to nie problem, ale jak to usuwać z ostatniego wpisu przy dodawaniu nowego?
Jim
najlepiej to by było od razu zapisać dane do bazy, przechowywanie danych, zwłaszcza haseł, emaili, nie jest zbyt bezpieczne.
Ale jak już nie ma innego wyjścia to dobrze zabezpiecz ten plik xml. Co do dodawania nowych rekordów: jeśli masz php5 Simple XML.
Aimar
A jeśli php5 nie mam? :/
Na serwerze ciągle na php4 lecą, bo w php5 były jakieś błędy kodowania w połączeniu z jakąś tam wersją mysql ... nie wnikam w to, co tam było, ale niestety jest tylko php4 ;/

Da się to jakoś rozwiązać?
Jim
  1. <?php
  2. $contents = '';
  3. while ($line = @fgets($fp,1024)) {
  4. if ( !is_numeric( strpos($line,'</channel></rss>' )) ) {
  5. $contents .= $line;
  6. }
  7. }
  8. $contents .= $nowy_rekord.'</channel></rss>';
  9. ?>
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.