logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Księga gości w PHP - problem z dodawaniem wpisów, skrypt nie działa poprawnie

Mbeat 18 Kwi 2006 16:02 11268 18
REKLAMA
  • #1 2540447
    Mbeat
    Poziom 21  
    Posty: 643
    Pomógł: 38
    Ocena: 52
    Witam.
    Mam taki oto prosty skrypcik dzięki któremu można w prosty sposób stworzyć księgę gości. Wszystko chodzi ładnie, tzn. wyświetla wpisy z pliku txt ale : gdy klikne na DODAJ WPIS (tutaj) czekam i czekam bez końca i nic się nie dzieje - nik nie może dodać wpisu :(. Zobaczcie co może być tego przyczyną, bo zależy mi na tym a sam już dojść nie mogę ! Ustawiłem chmod na 777 wszystkiego. :(

    <TABLE width="100%" align="CENTER"><TR><TD>
    
    <!-- cała księga jest w jednym pliku, w zależności od wywołania (parametr $id) wykonywana jest odpowiednia akcja
    	 np. dla $id=1 jest wyswietlenie formularza słuzacego do dokonania wpisu; dla $id=2 wykonywany jest zapis danych
    	 z formularza do księgi pamietanej w pliku tekstowym po uprzedniej weryfikacji danych; dla $id roznego od 1 i od 2 jest
    	 po prostu wyswietlana ksiega -->  
    
    
    <? if ($id==1):  ?>
    
    	
       <DIV class="styl"><BR><BR><BR><font size="4">Twój wpis do księgi:<BR><BR><BR></font>
       <FORM ACTION="ksiegagosci/wzorbook.php?id=2" METHOD="POST">
       Autor: &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;
       <INPUT TYPE="TEXT" SIZE="30" MAXLENGTH="30" style="background-color: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" NAME="Autor"><BR><BR>
       E-mail: &nbsp; &nbsp; &nbsp; &nbsp;
       <INPUT TYPE="TEXT" SIZE="30" MAXLENGTH="30" style="background-color: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" NAME="adres"><BR><BR>
       www:  &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;
       <INPUT TYPE="TEXT" SIZE="30" MAXLENGTH="30" style="background-color: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" NAME="web"><BR><BR>
    <font size="2">(pola e-mail i www mog± pozostać puste)</font><BR><BR>
       <TEXTAREA NAME="Tresc" WRAP COLS=50 style="BACKGROUND-COLOR: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" ROWS=5></TEXTAREA><BR><BR><BR> &nbsp;  &nbsp;  &nbsp;  
       <INPUT TYPE=SUBMIT VALUE= " Dopisz " style="BACKGROUND-COLOR: #333333;  FONT-FAMILY : Verdana; FONT-SIZE : 12; color: #FFFFFF"> &nbsp;  &nbsp;  &nbsp;  
       <INPUT TYPE="RESET"  VALUE=" Wyczy¶ć " style="BACKGROUND-COLOR: #333333; FONT-FAMILY : Verdana; FONT-SIZE : 12; color: #FFFFFF">
       </FORM></DIV>  
    <? exit; endif; ?>
    
    
    <? if ($id==2) {
    
      if(($Autor=="") or ($Tresc==""))   // było jeszcze sprawdzanie pole e-mail, ale zrezygnowałem:  or ($adres=="")
      //jesli pole autor lub tresc jest puste pojawia sie komunikat monitujacy
      {
      print("<BR><BR><P class=\"styl\"><B>Nie wypełniłe¶ wszytkich pól !</B></P>");
      print("<BR><BR><P class=\"styl\"><A HREF=\"ksiegagosci/wzorbook.php?id=1\">powrót do formularza</A></P>");
      print("<P class=\"styl\"><A HREF=\"ksiegagosci/wzorbook.php\">powrót do księgi</A></P>");
      exit;
      } 
    //tu obrabia sie wpis przez usuniecie ewentualnych znakow niebezpiecznych,
    //a enter zamienia sie na przejscie do nowej linii  
      $Tresc = ereg_replace("<","&lt;", $Tresc);
      $Tresc = ereg_replace(">","&gt;", $Tresc);
      $Tresc = ereg_replace("\n", "<BR>", $Tresc);
      
    //wpisy ksiegi gosci pamietane sa w pliku o nazwie ksiazka.txt - oczywiscie mozna to zmienic 
    
      $nazwa = "ksiegagosci/ksiazka.txt";
    
    //nie wysilalem sie z weryfikacja wpisanego przez goscia adresu wlasnej strony
    //po prostu mozna tutaj wpisac tylko adres w ktorym wystepuje ciag znakow ".pl"
    //moze jest to krzywdzace dla posiadaczy stron bez takich znakow w adresie,
    //ale z pewnoscia uchroni to ksiege przed wpisem zlosliwego goscia np. http://dupa.jasiu 
    
      if (ereg(".pl", $web)) {
       $web="moja strona: &nbsp; <a href=\"$web\" target='_blank'>$web</a><BR>";
       }
      else {
       $web="";
       }; 
    
    //jak widac nizej wpis zawiera nie tylko dane wpisane przez goscia, ale takze rozmaite znaczniki
    //HTML formatujace wpis do postaci przydatnej do natychmiastowego wyswietlenia. 
    //jest to rozwiazanie spotykane w wielu ksiegach gosci
    
      if ($adres=="") { 
       $adres="nie podano adresu e-mail";
       $wpis = "<I>".date("d.m.Y")." &nbsp; &nbsp; g. ".date("H.i")."</I><BR><B>$Autor<BR>$adres<BR>$web <BR></B> $Tresc\n";
       } 
     else {
      $wpis = "<I>".date("d.m.Y")." &nbsp; &nbsp; g. ".date("H.i")."</I><BR><B>$Autor<BR> <a HREF=\"mailto:$adres\">$adres</A> <BR>$web<BR></B> $Tresc\n";  
      };
      $myFile = fopen($nazwa, "r+");
      $wpis=$wpis.fread($myFile, filesize($nazwa));
      rewind($myFile);
      fputs($myFile, $wpis);
      fclose($myFile);
    	
      print("<BR><BR><P class=\"styl\"><B>Dziękuję za wpis!</B></P><BR>");
      print("<BR><BR><P class=\"styl\"><A href=\"ksiegagosci/wzorbook.php\">obejrzyj swój wpis</A></P>");
    
    //w tym miejscu jest hiperlink do powrotu do strony glownej naszego serwisu np index.php lub index.htm itp.
    
      print("<P class=\"styl\"><A href=\"..\index.php\">powrót do  strony</A></P>");
    } 
    
    else { //id nie równa się 1 ani 2 
       
      print "<P class=\"styl\"><B><BR><font color=#FF0000>aby się wpisać kliknij";
      print "<A HREF=\"ksiegagosci/wzorbook.php?id=1\">&nbsp;&nbsp;&nbsp;";
      print "&nbsp;>> tutaj <<</A>";
      print ("<BR><font color=#000000>liczba wpisów w księdze (od 26.02.2002):&nbsp;"); 
    
    
    // zliczanie dotychczasowych wpisów 
    // tu istotny moment liczba 2000 lilka linii nizej okresla w przyblizeniu dlugosc calego wpisu
    //ktory mozna dokonac. Jezeli gosc wpisze caly elaborat to moze on zostac podzielony na 2
    //albo na wiecej wpisow w ksiedze, ktore beda wyswietlone jeden za drugim jakby byly to 2 wpisy
    //jezeli liczba 2000 jest za mala to mozna ja zmienic
    
      $nazwa = "ksiegagosci/ksiazka.txt"; 
      $myFile = fopen($nazwa, "r");
      $i=0;
      while(!feof($myFile))  {
    	 $myLine = fgets($myFile, 2000);
    	 $i++; 
       }
      fclose($myFile);
      print(" &nbsp; $i<BR><BR></B></font>"); // drukowanie liczby wpisow;
    
     
      print "<HR color=#0000FF width=\"500\"><BR>";
      $nazwa = "ksiegagosci/ksiazka.txt";
      $myFile = fopen($nazwa, "r");
      $k=1;
      $end=$st+9;
      while(!feof($myFile))   // dopóki nie jest koniec pliku - drukowanie po jednym wpisie (1 wpis = 1 linia pliku
       {		// ale 1 linia pliku ma już w sobie format w jakim jest drukowana - zajmuje kilka linii)
    	 $myLine = fgets($myFile, 2000);
    	 if ($k>=$st) {
    		if ($k<=$end) {
    					 
    				print("<P class=\"styl\">$myLine</P><HR width=\"500\" color=#0000FF><BR>");		   
    		};
    	 };
    	 $k++;
       }
    
    
    //wpisy w ksiedze sa wyswietlane  "w dawkach" po 10 sztuk na jednej stronie;
    //kolejne wpisy sa dostepne na innych stronach ksiegi, do ktorych mozna wejsc
    //przez hiperlinki u dolu strony 
    
      fclose($myFile);
      print("<P class=\"styl\"><B><font color=#000000>inne strony księgi<BR>");
    
      $ile=floor($i/10);					  //obliczenie ilości stron ksiegi
      $ctpage=floor($st/10)+1;		  //numer strony biezacej
      for ($z=0;$z<=$ile;$z++) {
    	$y=$z+1;							 //numery stron są od 1 a nie od 0
    	if ($y==$ctpage) {print ("<FONT color=#000000> $y ");}	   //piszemy numer biezacej strony nie jako hiperlink
    	   else {print ("<A HREF=\"ksiegagosci/wzorbook.php?st=".$z."1\"> $y </A>");}	//numery innych stron to hiperlinki
      };
    
    
      } //koniec od else
    
    ?>
    </TD></TR></TABLE>
    



    Za pomoc w rozwiązaniu problemu 20pkt.
  • REKLAMA
  • #2 2540870
    ostry_18
    Poziom 24  
    Posty: 824
    Pomógł: 64
    Ocena: 35
    ojoj

    exit kończy skrypt definitywnie. czyli jesli dasz exit przed endif to parser nie znajdzie tego endif. jeśli go nie będzie to pokaże się błąd, lub - jeśli sa wyłączone - nic - tak jak u Ciebie.

    Pozatym jeśli te poszczegółne działania są okreśane przez id, to exit nie jest wcale potrzebny.

    pozdrawiam[/b]
  • #3 2540986
    Mbeat
    Poziom 21  
    Posty: 643
    Pomógł: 38
    Ocena: 52
    Usunąłem exit ale dalej to samo nic się nie dzieje gdy chcem dokonać wpisu :(.
  • REKLAMA
  • #4 2541057
    ostry_18
    Poziom 24  
    Posty: 824
    Pomógł: 64
    Ocena: 35
    nie chce sie zbytnie zagłębiac w nawiasy, ify i endify, ale mozliwe że włąsnie tam jest błąd. nie pamiętam składni alternatywnej (endif własnie), sprobuj może normalnie

    <? if ($id==1) { ?>
    tu formularz
    <? }
    
    elseif ($id==2) { 
     


    i tak dalej..
  • #5 2541517
    Mbeat
    Poziom 21  
    Posty: 643
    Pomógł: 38
    Ocena: 52
    Niestety nie skutkuje. Proszę o napisanie jak najprostrzej księgi gości opartej o plik txt w którym zapisywane będą wpisy - za poprawny skrypt podaruje 50 pkt.
    Pozdrawiam.
  • Pomocny post
    #6 2541760
    ostry_18
    Poziom 24  
    Posty: 824
    Pomógł: 64
    Ocena: 35
    <? $id = $_GET['id']; ?>
    <TABLE width="100%" align="CENTER"><TR><TD>
    
    <!-- cała księga jest w jednym pliku, w zależności od wywołania (parametr $id) wykonywana jest odpowiednia akcja
        np. dla $id=1 jest wyswietlenie formularza słuzacego do dokonania wpisu; dla $id=2 wykonywany jest zapis danych
        z formularza do księgi pamietanej w pliku tekstowym po uprzedniej weryfikacji danych; dla $id roznego od 1 i od 2 jest
        po prostu wyswietlana ksiega --> 
    
    
    <? if ($id==1) { ?>
    
       
       <DIV class="styl"><BR><BR><BR><font size="4">Twój wpis do księgi:<BR><BR><BR></font>
       <FORM ACTION="index.php?id=2" METHOD="POST">
       Autor: &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;
       <INPUT TYPE="TEXT" SIZE="30" MAXLENGTH="30" style="background-color: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" NAME="Autor"><BR><BR>
       E-mail: &nbsp; &nbsp; &nbsp; &nbsp;
       <INPUT TYPE="TEXT" SIZE="30" MAXLENGTH="30" style="background-color: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" NAME="adres"><BR><BR>
       www:  &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;
       <INPUT TYPE="TEXT" SIZE="30" MAXLENGTH="30" style="background-color: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" NAME="web"><BR><BR>
    <font size="2">(pola e-mail i www mog± pozostać puste)</font><BR><BR>
       <TEXTAREA NAME="Tresc" WRAP COLS=50 style="BACKGROUND-COLOR: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" ROWS=5></TEXTAREA><BR><BR><BR> &nbsp;  &nbsp;  &nbsp; 
       <INPUT TYPE=SUBMIT VALUE= " Dopisz " style="BACKGROUND-COLOR: #333333;  FONT-FAMILY : Verdana; FONT-SIZE : 12; color: #FFFFFF"> &nbsp;  &nbsp;  &nbsp; 
       <INPUT TYPE="RESET"  VALUE=" Wyczy¶ć " style="BACKGROUND-COLOR: #333333; FONT-FAMILY : Verdana; FONT-SIZE : 12; color: #FFFFFF">
       </FORM></DIV> 
    <?
    }
    
    else if ($id==2) {
    
       if(($Autor=="") or ($Tresc=="")) {  // było jeszcze sprawdzanie pole e-mail, ale zrezygnowałem:  or ($adres=="")
       //jesli pole autor lub tresc jest puste pojawia sie komunikat monitujacy {
           print("<BR><BR><P class=\"styl\"><B>Nie wypełniłe¶ wszytkich pól !</B></P>");
           print("<BR><BR><P class=\"styl\"><A HREF=\"index.php?id=1\">powrót do formularza</A></P>");
           print("<P class=\"styl\"><A HREF=\"index.php\">powrót do księgi</A></P>");
           exit;
       }
       //tu obrabia sie wpis przez usuniecie ewentualnych znakow niebezpiecznych,
       //a enter zamienia sie na przejscie do nowej linii 
       $Tresc = ereg_replace("<","&lt;", $Tresc);
       $Tresc = ereg_replace(">","&gt;", $Tresc);
       $Tresc = ereg_replace("\n", "<BR>", $Tresc);
    
       //wpisy ksiegi gosci pamietane sa w pliku o nazwie ksiazka.txt - oczywiscie mozna to zmienic
    
       $nazwa = "ksiazka.txt";
    
       //nie wysilalem sie z weryfikacja wpisanego przez goscia adresu wlasnej strony
       //po prostu mozna tutaj wpisac tylko adres w ktorym wystepuje ciag znakow ".pl"
       //moze jest to krzywdzace dla posiadaczy stron bez takich znakow w adresie,
       //ale z pewnoscia uchroni to ksiege przed wpisem zlosliwego goscia np. http://D...jasiu
    
       if (ereg(".pl", $web)) {
           $web="moja strona: &nbsp; <a href=\"$web\" target='_blank'>$web</a><BR>";
       }
       else {
           $web="";
       }
       
    
       //jak widac nizej wpis zawiera nie tylko dane wpisane przez goscia, ale takze rozmaite znaczniki
       //HTML formatujace wpis do postaci przydatnej do natychmiastowego wyswietlenia.
       //jest to rozwiazanie spotykane w wielu ksiegach gosci
    
       if ($adres=="") {
           $adres="nie podano adresu e-mail";
           $wpis = "<I>".date("d.m.Y")." &nbsp; &nbsp; g. ".date("H.i")."</I><BR><B>$Autor<BR>$adres<BR>$web <BR></B> $Tresc\n";
       }
       else {
           $wpis = "<I>".date("d.m.Y")." &nbsp; &nbsp; g. ".date("H.i")."</I><BR><B>$Autor<BR> <a HREF=\"mailto:$adres\">$adres</A> <BR>$web<BR></B> $Tresc\n";
       }
       $myFile = fopen($nazwa, "r+");
       $wpis=$wpis.fread($myFile, filesize($nazwa));
       rewind($myFile);
       fputs($myFile, $wpis);
       fclose($myFile);
    
       print("<BR><BR><P class=\"styl\"><B>Dziękuję za wpis!</B></P><BR>");
       print("<BR><BR><P class=\"styl\"><A href=\"index.php\">Wróc do ksiegi</A></P>");
    
    
    }
    else {
    //id nie równa się 1 ani 2
    
    print "<P class=\"styl\"><B><BR><font color=#FF0000>aby się wpisać kliknij";
    print "<A HREF=\"index.php?id=1\">&nbsp;&nbsp;&nbsp;";
    print "&nbsp;>> tutaj <<</A>";
    print ("<BR><font color=#000000>liczba wpisów w księdze (od 26.02.2002):&nbsp;");
    
    
    // zliczanie dotychczasowych wpisów
    // tu istotny moment liczba 2000 lilka linii nizej okresla w przyblizeniu dlugosc calego wpisu
    //ktory mozna dokonac. Jezeli gosc wpisze caly elaborat to moze on zostac podzielony na 2
    //albo na wiecej wpisow w ksiedze, ktore beda wyswietlone jeden za drugim jakby byly to 2 wpisy
    //jezeli liczba 2000 jest za mala to mozna ja zmienic
    
    $nazwa = "ksiazka.txt";
    $myFile = fopen($nazwa, "r");
    $i=0;
    if (file_exists($nazwa)){
       while(!feof($myFile)) {
           $myLine = fgets($myFile, 2000);
           $i++;
       }
       fclose($myFile);
    }
    print(" &nbsp; $i<BR><BR></B></font>"); // drukowanie liczby wpisow;
    
    
    print "<HR color=#0000FF width=\"500\"><BR>";
    $nazwa = "ksiazka.txt";
    $myFile = fopen($nazwa, "r");
    $k=1;
    $end=$st+9;
    while(!feof($myFile)){   // dopóki nie jest koniec pliku - drukowanie po jednym wpisie (1 wpis = 1 linia pliku {
        // ale 1 linia pliku ma już w sobie format w jakim jest drukowana - zajmuje kilka linii)
        $myLine = fgets($myFile, 2000);
        if ($k>=$st) {
            if ($k<=$end) {
                
                print("<P class=\"styl\">$myLine</P><HR width=\"500\" color=#0000FF><BR>");
            }
            ;
        }
        ;
        $k++;
    }
    
    
    //wpisy w ksiedze sa wyswietlane  "w dawkach" po 10 sztuk na jednej stronie;
    //kolejne wpisy sa dostepne na innych stronach ksiegi, do ktorych mozna wejsc
    //przez hiperlinki u dolu strony
    
    fclose($myFile);
    print("<P class=\"styl\"><B><font color=#000000>inne strony księgi<BR>");
    
    $ile=floor($i/10);                 //obliczenie ilości stron ksiegi
    $ctpage=floor($st/10)+1;        //numer strony biezacej
    for ($z=0;$z<=$ile;$z++) {
        $y=$z+1;                      //numery stron są od 1 a nie od 0
        if ($y==$ctpage) {
            print ("<FONT color=#000000> $y ");
        }
        //piszemy numer biezacej strony nie jako hiperlink
        else {
            print ("<A HREF=\"index.php?st=".$z."1\"> $y </A>");
        }
        //numery innych stron to hiperlinki
    }
    
    }
    //koniec od else
    
    ?>
    </TD></TR></TABLE>


    naprawiłem ta ksęga

    aż dziw że ten kod działał. u mnei zawieszał firefoxa, bo powstawała pętla nieskończona i strona sie rozrastała do ponad 400mb. ponadto co raz brakowało klamr, ale już jest OK.
    plik nazywac sie musi index.php, ksiazka.php w tym samym folderze co index

    pozdrawiam (i po cichu licze na obiecane 50pkt, o ile tylko CI zadziała)
  • REKLAMA
  • #7 2541908
    Mbeat
    Poziom 21  
    Posty: 643
    Pomógł: 38
    Ocena: 52
    Witam. No teraz już jest prawie dobrze. Ale jeszcze nie dokońca. Wyskakuje że nie wypełniłem wszystkich pól mimo że tak nie jest :/
  • #8 2542628
    ostry_18
    Poziom 24  
    Posty: 824
    Pomógł: 64
    Ocena: 35
    oto (dzięki za punkty):

    <? $id = $_GET['id']; ?>
    <TABLE width="100%" align="CENTER"><TR><TD>
    
    <!-- cała księga jest w jednym pliku, w zależno¶ci od wywołania (parametr $id) wykonywana jest odpowiednia akcja
        np. dla $id=1 jest wyswietlenie formularza słuzacego do dokonania wpisu; dla $id=2 wykonywany jest zapis danych
        z formularza do księgi pamietanej w pliku tekstowym po uprzedniej weryfikacji danych; dla $id roznego od 1 i od 2 jest
        po prostu wyswietlana ksiega --> 
    
    
    <? if ($id==1) { ?>
    
       
       <DIV class="styl"><BR><BR><BR><font size="4">Twój wpis do księgi:<BR><BR><BR></font>
       <FORM ACTION="index.php?id=2" METHOD="POST">
       Autor: &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;
       <INPUT TYPE="TEXT" SIZE="30" MAXLENGTH="30" style="background-color: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" NAME="Autor"><BR><BR>
       E-mail: &nbsp; &nbsp; &nbsp; &nbsp;
       <INPUT TYPE="TEXT" SIZE="30" MAXLENGTH="30" style="background-color: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" NAME="adres"><BR><BR>
       www:  &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;
       <INPUT TYPE="TEXT" SIZE="30" MAXLENGTH="30" style="background-color: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" NAME="web"><BR><BR>
    <font size="2">(pola e-mail i www mog± pozostać puste)</font><BR><BR>
       <TEXTAREA NAME="Tresc" WRAP COLS=50 style="BACKGROUND-COLOR: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" ROWS=5></TEXTAREA><BR><BR><BR> &nbsp;  &nbsp;  &nbsp; 
       <INPUT TYPE=SUBMIT VALUE= " Dopisz " style="BACKGROUND-COLOR: #333333;  FONT-FAMILY : Verdana; FONT-SIZE : 12; color: #FFFFFF"> &nbsp;  &nbsp;  &nbsp; 
       <INPUT TYPE="RESET"  VALUE=" Wyczy¶ć " style="BACKGROUND-COLOR: #333333; FONT-FAMILY : Verdana; FONT-SIZE : 12; color: #FFFFFF">
       </FORM></DIV> 
    <?
    }
    
    else if ($id==2) {
       if(($_POST['Autor']=="") || ($_POST['Tresc']=="")) {  // było jeszcze sprawdzanie pole e-mail, ale zrezygnowałem:  or ($adres=="")
       //jesli pole autor lub tresc jest puste pojawia sie komunikat monitujacy {
           print("<BR><BR><P class=\"styl\"><B>Nie wypełniłes wszytkich pól !</B></P>");
           print("<BR><BR><P class=\"styl\"><A HREF=\"index.php?id=1\">powrót do formularza</A></P>");
           print("<P class=\"styl\"><A HREF=\"index.php\">powrót do księgi</A></P>");
           exit;
       }
       //tu obrabia sie wpis przez usuniecie ewentualnych znakow niebezpiecznych,
       //a enter zamienia sie na przejscie do nowej linii 
       $Tresc = ereg_replace("<","&lt;", $_POST['Tresc']);
       $Tresc = ereg_replace(">","&gt;", $Tresc);
       $Tresc = ereg_replace("\n", "<BR>", $Tresc);
    
       //wpisy ksiegi gosci pamietane sa w pliku o nazwie ksiazka.txt - oczywiscie mozna to zmienic
    
       $nazwa = "ksiazka.txt";
    
       //nie wysilalem sie z weryfikacja wpisanego przez goscia adresu wlasnej strony
       //po prostu mozna tutaj wpisac tylko adres w ktorym wystepuje ciag znakow ".pl"
       //moze jest to krzywdzace dla posiadaczy stron bez takich znakow w adresie,
       //ale z pewnoscia uchroni to ksiege przed wpisem zlosliwego goscia np. http://D...jasiu
    
       if (ereg(".pl", $_POST['web'])) {
           $web="moja strona: &nbsp; <a href=\"".$_POST['web']."\" target='_blank'>$web</a><BR>";
       }
       else {
           $web="";
       }
       
    
       //jak widac nizej wpis zawiera nie tylko dane wpisane przez goscia, ale takze rozmaite znaczniki
       //HTML formatujace wpis do postaci przydatnej do natychmiastowego wyswietlenia.
       //jest to rozwiazanie spotykane w wielu ksiegach gosci
    
       if ($_POST['adres']=="") {
           $adres="nie podano adresu e-mail";
           $wpis = "<I>".date("d.m.Y")." &nbsp; &nbsp; g. ".date("H.i")."</I><BR><B>$Autor<BR>$adres<BR>$web <BR></B> $Tresc\n";
       }
       else {
           $wpis = "<I>".date("d.m.Y")." &nbsp; &nbsp; g. ".date("H.i")."</I><BR><B>$Autor<BR> <a HREF=\"mailto:".$_POST['adres']."\">".$_POST['adres']."</A> <BR>$web<BR></B> $Tresc\n";
       }
       $myFile = fopen($nazwa, "r+");
       $wpis=$wpis.fread($myFile, filesize($nazwa));
       rewind($myFile);
       fputs($myFile, $wpis);
       fclose($myFile);
    
       print("<BR><BR><P class=\"styl\"><B>Dziękuję za wpis!</B></P><BR>");
       print("<BR><BR><P class=\"styl\"><A href=\"index.php\">Wróc do ksiegi</A></P>");
    
    
    }
    else {
    //id nie równa się 1 ani 2
    
    print "<P class=\"styl\"><B><BR><font color=#FF0000>aby się wpisać kliknij";
    print "<A HREF=\"index.php?id=1\">&nbsp;&nbsp;&nbsp;";
    print "&nbsp;>> tutaj <<</A>";
    print ("<BR><font color=#000000>liczba wpisów w księdze (od 26.02.2002):&nbsp;");
    
    
    // zliczanie dotychczasowych wpisów
    // tu istotny moment liczba 2000 lilka linii nizej okresla w przyblizeniu dlugosc calego wpisu
    //ktory mozna dokonac. Jezeli gosc wpisze caly elaborat to moze on zostac podzielony na 2
    //albo na wiecej wpisow w ksiedze, ktore beda wyswietlone jeden za drugim jakby byly to 2 wpisy
    //jezeli liczba 2000 jest za mala to mozna ja zmienic
    
    $nazwa = "ksiazka.txt";
    $myFile = fopen($nazwa, "r");
    $i=0;
    if (file_exists($nazwa)){
       while(!feof($myFile)) {
           $myLine = fgets($myFile, 2000);
           $i++;
       }
       fclose($myFile);
    }
    print(" &nbsp; $i<BR><BR></B></font>"); // drukowanie liczby wpisow;
    
    
    print "<HR color=#0000FF width=\"500\"><BR>";
    $nazwa = "ksiazka.txt";
    $myFile = fopen($nazwa, "r");
    $k=1;
    $end=$st+9;
    while(!feof($myFile)){   // dopóki nie jest koniec pliku - drukowanie po jednym wpisie (1 wpis = 1 linia pliku {
        // ale 1 linia pliku ma już w sobie format w jakim jest drukowana - zajmuje kilka linii)
        $myLine = fgets($myFile, 2000);
        if ($k>=$st) {
            if ($k<=$end) {
                
                print("<P class=\"styl\">$myLine</P><HR width=\"500\" color=#0000FF><BR>");
            }
            ;
        }
        ;
        $k++;
    }
    
    
    //wpisy w ksiedze sa wyswietlane  "w dawkach" po 10 sztuk na jednej stronie;
    //kolejne wpisy sa dostepne na innych stronach ksiegi, do ktorych mozna wejsc
    //przez hiperlinki u dolu strony
    
    fclose($myFile);
    print("<P class=\"styl\"><B><font color=#000000>inne strony księgi<BR>");
    
    $ile=floor($i/10);                 //obliczenie ilo¶ci stron ksiegi
    $ctpage=floor($st/10)+1;        //numer strony biezacej
    for ($z=0;$z<=$ile;$z++) {
        $y=$z+1;                      //numery stron s± od 1 a nie od 0
        if ($y==$ctpage) {
            print ("<FONT color=#000000> $y ");
        }
        //piszemy numer biezacej strony nie jako hiperlink
        else {
            print ("<A HREF=\"index.php?st=".$z."1\"> $y </A>");
        }
        //numery innych stron to hiperlinki
    }
    
    }
    //koniec od else
    
    ?>
    </TD></TR></TABLE>
  • #9 2543403
    Mbeat
    Poziom 21  
    Posty: 643
    Pomógł: 38
    Ocena: 52
    Witam. No teraz to jest super :) Jeszcze raz dzięki.
    Mam takie pytanko czy podjął by się ktoś wykonania FORUM na stronie oczywiście nie za darmo (punkty). FORUM podzielona by było na :

    I. ABCDEFG
    1. Mechanika
    2. Elektryka
    3. Zrób to sam
    4. Problemy
    5. Renowacje
    6. Zdjęcia
    7. Zloty i spotkania
    II. GIEŁDA
    1. Samochody
    2. Części
    III. DOWNLOAD
    1. Filmy
    2. Zdjęcia
    .........
    ...........
    ........ itd....
  • #10 2543959
    ostry_18
    Poziom 24  
    Posty: 824
    Pomógł: 64
    Ocena: 35
    chcesz frum w phpbb, tylko skonfigurowac? czy napsiac od nowa?

    ogółnie to ja sie wstepnie na to pisze;
  • #11 2544012
    Mbeat
    Poziom 21  
    Posty: 643
    Pomógł: 38
    Ocena: 52
    Ogólnie chcem forum od podstaw na stronę w php. Aby była dostosowana do strony (wizualnie). Do tego jakaś prosta administracja, możliwość logowania i rejestracji. Nie wiem może w oparciu o pliki txt ??? Aby zrobić to jak najprościej i najlepiej (bez avatarów, obrazków i takich tam zbędnych rzeczy). Dobrze by było aby pokazana była ilość postów napisanych przez użytkownika pod loginem.
    Pozdrawiam.
  • #12 2544116
    ostry_18
    Poziom 24  
    Posty: 824
    Pomógł: 64
    Ocena: 35
    wygodniej jest administrowac forum na mysqlu. masz bazę na tym serwerze gdzie strona?
    jesli tak, to phpbb, proste i łatwe w konfiguracji. a wodotryski można wyłączyc.
  • #13 2545214
    Mbeat
    Poziom 21  
    Posty: 643
    Pomógł: 38
    Ocena: 52
    Chcem aby Forum było nie zależne od innych stron i korzystało jedynie z mego serwera. Konto mam na www.YoYo.pl (30MB baza danych MySQL) ale na MySQL nie wiem oco za bardzo chodzi i jak z tego korzystać. Tak więc czekam na propozycje - hmmm... 70 pkt powinno starczyć ?? Ogólnie ma być jak najprościej ale przejżyście :)
    Pozdrawiam.
  • REKLAMA
  • #14 2545542
    ostry_18
    Poziom 24  
    Posty: 824
    Pomógł: 64
    Ocena: 35
    no to phpbb:) 70 pkt moze byc, zbytnio mi na nich nie zalezy, mam dużo. sciagnij http://prdownloads.sourceforge.net/phpbb/phpBB-2.0.20.zip
    i to:
    http://www.phpbb.com/files/releases/language_packs/lang_polish.zip
    rozpakuj i wrzuc na serwer. dowiedz sie nazwe bazy danych, login i haslo. a najlepiej by bylo gdybys dał mi pass i login do ftp, a potem sobie zmienisz to ci zainstaluje w wolnej chwili (tzn jutro)
  • #15 2546548
    Mbeat
    Poziom 21  
    Posty: 643
    Pomógł: 38
    Ocena: 52
    Wracając do Księgi GOści to problem jeszcze w tym że nie widać Nicków osób któe wpisały się. Gdzie leży błąd ??
  • #16 2547435
    ostry_18
    Poziom 24  
    Posty: 824
    Pomógł: 64
    Ocena: 35
    juz dostałes na maila wczoraj

    znajdz ten fragm kodu i zamien na
    if ($_POST['adres']=="") {
          $adres="nie podano adresu e-mail";
          $wpis = "<I>".date("d.m.Y")." &nbsp; &nbsp; g.
    ".date("H.i")."</I><BR><B>".$_POST['Autor']."<BR>$adres<BR>$web
    <BR></B> $Tresc\n";
      }
      else {
          $wpis = "<I>".date("d.m.Y")." &nbsp; &nbsp; g.
    ".date("H.i")."</I><BR><B>".$_POST['Autor']."<BR> <a
    HREF=\"mailto:".$_POST['adres']."\">".$_POST['adres']."</A>
    <BR>$web<BR></B> $Tresc\n";
      }
  • #17 2547654
    Mbeat
    Poziom 21  
    Posty: 643
    Pomógł: 38
    Ocena: 52
    Robie tak jak mówisz ale dalej nie widać Nicków, a po za tym wpis rozdzielony jest liniami (godzina, linia, email, linia, wpis, linia) Jeszcze gdzieś chyba jest błąd :/
  • #18 2547822
    ostry_18
    Poziom 24  
    Posty: 824
    Pomógł: 64
    Ocena: 35
    hmm. linie - chodzi ci o takie kolorowe (hr) czy tylko przerwy (br)?
    na pw wyslalem caly działajacy kod. jaka masz wersje php?

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy problemów z prostym skryptem księgi gości w PHP, który poprawnie wyświetla wpisy z pliku tekstowego, lecz nie pozwala na dodawanie nowych wpisów. Przyczyną problemu były błędy w składni PHP, zwłaszcza niewłaściwe użycie instrukcji exit oraz alternatywnej składni if-endif. Po usunięciu exit i poprawieniu składni, skrypt zaczął działać, jednak pojawił się problem z walidacją formularza, który zgłaszał nieuzasadnione błędy o niewypełnionych polach. Ostatecznie zaproponowano prosty, działający skrypt księgi gości, który zapisuje wpisy do pliku txt i wyświetla je z poprawnym formatowaniem, w tym widocznymi nickami autorów. Wskazano także na konieczność poprawnego przetwarzania danych z formularza, w tym obsługę pola adresu e-mail. W dalszej części dyskusji pojawiła się prośba o stworzenie prostego forum w PHP, najlepiej opartego na plikach tekstowych, z funkcjami logowania, rejestracji i prostą administracją. Zasugerowano użycie phpBB z bazą MySQL, jednak autor preferował niezależne rozwiązanie oparte na własnym serwerze i plikach txt. Podano linki do pobrania phpBB i polskiego pakietu językowego oraz omówiono kwestie konfiguracji i administracji. Ostatecznie autor wstrzymał się z realizacją forum i powrócił do kwestii poprawności kodu księgi gości, zwracając uwagę na zgodność ze standardami W3C.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA