Pomóżcie przy Księdze Gosci
Rav27 - 22-04-2007 21:30
Pomóżcie przy Księdze Gosci
Witam
pewien znajomy napisał mi prostą księge gości w php
plik ksiega wygląda tak:
<?php
$mail=$_POST['mail'];
$wiadomosc=$_POST['tresc'];
$data=date('Y-m-d');
$godzina=date('H:i');
$open=fopen("ilosc.txt","r");
$id=fgets($open);
$id++;
if(strlen($mail) && strlen($wiadomosc)){
$uchwyt=fopen("wpisy.txt","a");
fputs($uchwyt,$id);
fputs($uchwyt,"\n");
fputs($uchwyt,$data);
fputs($uchwyt,"\n");
fputs($uchwyt,$godzina);
fputs($uchwyt,"\n");
fputs($uchwyt,$mail);
fputs($uchwyt,"\n");
fputs($uchwyt,$wiadomosc);
fputs($uchwyt,"\n");
}
?>
no i potem html ze stroną a w niej kolejny kod
<?php
$j=0;
$plik=fopen("wpisy.txt","r");
while(!feof($plik)){
$idd[]=fgets($plik);
$dataa[]=fgets($plik);
$godzinaa[]=fgets($plik);
$email[]=fgets($plik);
$tresc[]=fgets($plik);
$j++;
}
fclose($plik);
$iloscU=fopen("ilosc.txt","w");
fputs($iloscU,$j-1);
fclose($iloscU);
$file=fopen("licznik.txt","r");
$licznik=fgets($file);
fclose($file);
$skok=3;
if(!strlen($_GET['load'])) $licznik=$j-1;
if(!strcmp($_GET['load'],"next") && $licznik>=0){
$licznik=$licznik-$skok;}
else if(!strcmp($_GET['load'],"prev") && $licznik<=$j-1 ){
$licznik=$licznik+$skok;} else if(!strcmp($_GET['load'],"prev")) $licznik=$j-1-$skok;
if($licznik>=$j-1) $licznik=$j-1-$skok;
if($licznik<0) $licznik=0;
for( $k=$j-2 ; $k>=0; $k--){
if($k<$licznik && $k>=($licznik-$skok)){
echo $idd[$k];
echo ' | ';
echo $dataa[$k];
echo ' | ';
echo $godzinaa[$k];
echo ' | ';
echo $email[$k];
echo "<br>";
echo $tresc[$k];
echo "<br>";
echo "<hr>";
}
}
$file=fopen("licznik.txt","w");
fputs($file,$licznik);
fclose($file);
?>
tu formularz
<form method="POST" action="ksiega.php">
<p>Napisz swój nick lub imię <input type="text" name="mail" size="20"></p>
<p><textarea rows="7" name="tresc" cols="50"></textarea></p>
<p><input type="submit" value="Dodaj">
</form>
<p><a onFocus="blur()" href="http://redbridgefan.ovh.org/ksiega.php?load=prev"><-poprzednie</a> | <a onFocus="blur()" href="http://redbridgefan.ovh.org/ksiega.php?load=next">następne-></a></p>
no i końcówka stronki html
o co mi chodzi
chciałem żeby mi wyświetlało po 20 kontaktów, a jeśli będzie więcej to można reszte ładować linkami next-prev
ale od jakiegoś czasu to nie działa
wyświetla po 3 wpisy i nawet zmiana cyferki 3 w $skok=3; nic nie pomaga a jeszcze knoci
czy może mi ktoś pomóc i tak lekko zmienić kod aby wyświetlało po prostu wszystkie wpisy??
Księga jest na plikach txt co łatwo odczytać z kodu
do tego jest plik del.php ze stronka, która kasuje wpis o określonum numerze ale z tym nie ma kłopotów
no i gdyby ktoś potrafił załatwić kłopot z klepnięciem ENTER'a który to knoci wyświetlanie wpisów
redbridgefan.ovh.org/ksiega.php - oto adres ksiegi
deallas - 28-04-2007 14:50
To tak. Twój problem tkwi w tej linii
Kod:
if($k<$licznik && $k>=($licznik-$skok)){
jak widzimy mamy do zmiany 2 zmienne $k i $skok. Jeśli chcesz żeby wyświetlało ci co 20 komentarzy zmień z
Kod:
for( $k=$j-2 ; $k>=0; $k--){
na
Kod:
for( $k=$j-19 ; $k>=0; $k--){
i oczywiście zmienną $skok daj na 20.
Aha jeszcze coś zauważyłem że twój skrypt jest podatny na ataki XSS które umożliwiają np. zasłoniecie całej strony jakimś syfem. Dlatego lepiej filtrować dane przychodzące (czyli te od POST i GET) przy pomocy funckji htmlspecialchars() W takiej postaci:
Kod:
htmlspecialchars($_POST['tresc'])
i to powtórz także dla zmiennej $_POST['mail']. Co do enterów najprościej posłużyć się html dodając do textarea wrap="hard". Chociaż można to obejść wiec lepiej stosować funkcje trim() w php ktora usuwa wszystkie znaki nowych linii. Mam nadzieję że pomogłem (sorry że tak długo)
deallas - 28-04-2007 14:55
A może potrzebujecie jakiegoś webmastera do strony. Przydał by mi się hajs a ostatnio dosyć go potrzebuję. Jak co to pisz na PW lub na maila.
Rav27 - 03-05-2007 11:46
Dzięki za pomoc
zmieniłem to co napisałeś
na for( $k=$j-19 ; $k>=0; $k--){
i $skok=20;
Rezultat: przestało mi wyświetlać wpisy...
Mam taką prośbe - mógłbym ci wysłać ten plik ksiega.php a ty byś wprowadził te małe zmianki, bo ja naprawdę jestem ciemny z php )-:
Poza tym niebardzo wiem co zrobić z tą radą na temat blokowania ENTER'a itd.
Z góry dzięki
deallas - 03-05-2007 22:33
nic dziwnego że przestało ci wyświetlać napisy. Ten skrypt jest trochę zrąbany. Też mi zaczęły znikać napisy jak miałem w pliku txt miej wpisów niż 3. Dlatego przygotowałem nowy skrypt:D który będzie kompatybilny z tamtym (tzn nie będziesz musiał przenosić ręcznie wpisów). Wyśle ci na maila jak skończę. Jak coś nie będzie grało to na PW.
Rav27 - 04-05-2007 00:24
WOW
będziesz miał u mni piwo za ten skrypt
chciałbym żeby był podobny do tego co mam, tzn. wyświetlał tyle wpisów ile będe chciał (co łątwo będzie mi oczywiście zmienić w każdej chwili)
ew. wersja wyświetlająca wszystkie wpisy
jeśli masz stronke daj adres, zlinkuje cię jako PODZIĘKOWANIE
zanotowane.pldoc.pisz.plpdf.pisz.plkonstruktor.keep.pl