ďťż

[PHP] Problem z blokowaniem pliku

       

Podstrony


telcocafe

Witam.
1. Mam taki kod:
<?php $plik = "banner.txt"; if (ereg("^[http://]", $_POST['lokalizacja']) && $_POST['lokalizacja'] && $_POST['strona'] && $_POST['alt'] !== '') { echo ('<center><table width="65%" style="border: 1mm solid green"><tr><td><font color="green"><b><center>Banner został dodany</center></b></font></td></tr></table></center> '); flock($plik, 2); fputs (fopen("$plik", "r+"), "<a href=\"$_POST[strona]\"><img src=\"$_POST[lokalizacja]\" alt=\"$_POST[alt]\" border=\"0\" width=460 height=60></a>"); flock($plik, 3); fclose(fopen($plik, "r+")); } else { echo('<center><table width="65%" style="border: 1mm solid red"><tr><td><font color="red"><b><center>Banner nie został dodany. Wypełnij wszytkie pola!</center></b></font></td></tr></table></ center>'); } ?>

Nie wiem dlaczego, ale wywala mi błędy tam gdzie mam funkcję flock. Jak to poprawić?

Warning: flock(): supplied argument is not a valid stream resource in (...)
2. Ten skrypt jest do dodawania bannerów. Nie wiem dlaczego, ale po kilkukrotnym dodaniu bannerów, kod się wywala i obok bannera wywala niepotrzebne znaczniki np.
a> width=480 itp.
Przykład z pliku:

<a href="http://www.mackowiak.net.pl"><img src="http://www.mackowiak.net.pl/zdjecia/reklama.gif" alt="ssd fs f hd gd g" border="0" width=460 height=60></a>ht=60></a>
Chodzi mi o ten kawałek zaznaczony. Dlaczego w ogóle on powstał? Co spowodowało dodanie go do kodu?
Użytkownik sauron edytował ten post 31 lipiec 2006, 19:00


z tego co widzę to chyba nie otworzyłeś tego pliku
na początku wywal zmienną $plik

potem przed flockiem dodaj tą linię:
$plik = fopen('banner.txt','w');

powinno pomóc

$plik = "banner.txt"; ... flock($plik, 2);

No blokowanie zmiennej tekstowej zawiele niedaje... Warto by najpierw otworzyć plik
$nazwa_plik = "banner.txt";
$plik=fopen($nazwa_plik,'rb+');

Czytaj niżej.

fputs (fopen("$plik", "r+"), "<a href=\"$_POST[strona]\"><img src=\"$_POST[lokalizacja]\" alt=\"$_POST[alt]\" border=\"0\" width=460 height=60></a>"); fclose(fopen($plik, "r+"));

A to jakieś szaleństwo... fopen w fputs i fclose? Nie... Po co tak, jak otwarty mamy już plik w $plik...

I jeszcze jedno... Proponowałbym tak:
fputs ($plik, '<a href="'.$_POST[strona].'"><img src="'.$_POST[lokalizacja].'" alt="'.$_POST[alt].'" border="0" width="460px" height="60px" /></a>');

// Ja chyba jakiś ślepy byłem , bo tego malutkiego postu wyżej niezauważyłem...
Użytkownik NIC edytował ten post 30 lipiec 2006, 21:45

~
Teraz dałem tak:
if (ereg("^[http://]", $_POST['lokalizacja']) && $_POST['lokalizacja'] && $_POST['strona'] && $_POST['alt'] !== '') { echo ('<center><table width="65%" style="border: 1mm solid green"><tr><td><font color="green"><b><center>Banner został dodany</center></b></font></td></tr></table></center> '); $file=fopen('banner.txt', 'r+'); flock($file , 2); fwrite ($file, '<a href="'.$_POST[strona].'"><img src="'.$_POST[lokalizacja].'" alt="'.$_POST[alt].'" border="0" width="460px" height="60px" /></a>'); flock($file, 3); fclose($file); }
I flock() działa. Tylko dlaczego, jak się kilka razy pododaje bannery to do pliku daje niepotrzebne znaczniki?
Przykład

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.