Flashový guestbook s PHP ukladaním do TXT súboru

Programovacie jazyky, rady, poradňa...
JurijRubanov
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 256
Registrovaný: 01 sep 2006, 12:21
Bydlisko: Prievidza
Kontaktovať používateľa:

Flashový guestbook s PHP ukladaním do TXT súboru

Príspevok od používateľa JurijRubanov »

Pri programovaní knihy návštev (lepšie povedané, až po jej publikovaní) som prišiel k anomálii. Nakopíroval som ju komplet na dva serveri podporujúce PHP. Avšak kniha fungovala iba na jednom z nich, konkrétne na "host.sk". Na "szm.sk", a ako som neskôr zistil, ale aj na niektorých iných serveroch kniha nefungovala (grafické rozhranie sa načítalo, avšak samotné záznamy nie). Teraz neviem, či je chyba v nastavení servera, alebo v nekompatibilite môjho PHP skriptu. Samotný skript bol súčasťou templatu a upravoval som ho len miniálne.

Kód: Vybrať všetko

http://www.pd-streets.szm.sk/test/

Kód: Vybrať všetko

http://www.zakladka.host.sk/test/

Kód: Vybrať všetko

<?php
        $Name = $Name;
        $Email = $Email;
        $Comments = $Comments;

        $Website = $Website;
        $Website = $Website;

        $Name = stripslashes($Name);
        $Email = stripslashes($Email);
        $Website = stripslashes($Website);
        $Comments = stripslashes($Comments);
	$medzera="  ";

if ($Submit == "Yes") {
        $filename = "GuestBook.txt";

        $fp = fopen( $filename,"r"); 
        $OldData = fread($fp, 80000); 
        fclose( $fp ); 

        $Today = (date ("d.m.Y (H:i:s)",time()));

        $Input = "<b>Meno:</b> $Name $medzera <b>Kedy:</b> $Today $medzera <b>Website: </b><a href=\"http://$Website\" target=\"_blank\"><u>$Website</u></a><br><b>Predmet: </b>$Email <br><b>Odkaz: </b>$Comments<br><br>.:::.";

        $New = "$Input$OldData";

        $fp = fopen( $filename,"w+"); 
        fwrite($fp, $New, 80000); 
        fclose( $fp ); 
}

        $filename = "GuestBook.txt";


        $fp = fopen( $filename,"r"); 
        $Data = fread($fp, 80000); 
        fclose( $fp );

        $DataArray = split (".:::.", $Data);

        $NumEntries = count($DataArray) - 1;

        print "&TotalEntries=$NumEntries&NumLow=$NumLow&NumHigh=$NumHigh&GuestBook=";
        for ($n = $NumLow; $n < $NumHigh; $n++) {
        print $DataArray[$n];
        }
        
?> 
Prílohy
guest.zip
komplet zbalený guestbook (fla, swf, html, txt, php)
(41.14 KiB) 430 stiahnutí
Slayter
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3111
Registrovaný: 28 jan 2006, 9:19
Bydlisko: Malmö, SWE

Príspevok od používateľa Slayter »

pokiaľ kniha funguje na serveri "host.sk" bezproblemovo, nebude podla mna chyba v tvojom skripte ale v serveri "szm.sk".
IgiPoP
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 446
Registrovaný: 12 sep 2005, 8:17
Bydlisko: MT

Re: Flashový guestbook s PHP ukladaním do TXT súboru

Príspevok od používateľa IgiPoP »

riesenie je jednoduche a nejde o chybu servera. praveze by som povedal, ze host.sk ma chybu na serveri.
v konfiguracii PHPcka sa nastavuje "register_globals". defaultne je nastaveny na hodnotu "On", ale je to dost nebezpecne. z toho celeho vyplyva, ze host.sk ju ma nastavenu na "On" a szm.sk na "Off".
ked je "On", tak php automaticky vytvori a naplni premenne pod takym menom ako boli POSTnute prostrednictvom formularu na server. ked je "Off" tak nevytvori.

riesenie:

Kód: Vybrať všetko

<?php
        $Name = $_POST['Name'];
        $Email = $_POST['Email'];
        $Comments = $_POST['Comments'];
        $Website = $_POST['Website'];

        $NumLow = $_GET['NumLow'];
        $NumHigh = $_GET['NumHigh'];

        $Name = stripslashes($Name);
        $Email = stripslashes($Email);
        $Website = stripslashes($Website);
        $Comments = stripslashes($Comments);
	$medzera="  ";

if ($Submit == "Yes") {
        $filename = "GuestBook.txt";

        $fp = fopen( $filename,"r"); 
        $OldData = fread($fp, 80000); 
        fclose( $fp ); 

        $Today = (date ("d.m.Y (H:i:s)",time()));

        $Input = "<b>Meno:</b> $Name $medzera <b>Kedy:</b> $Today $medzera <b>Website: </b><a href=\"http://$Website\" target=\"_blank\"><u>$Website</u></a><br><b>Predmet: </b>$Email <br><b>Odkaz: </b>$Comments<br><br>.:::.";

        $New = "$Input$OldData";

        $fp = fopen( $filename,"w+"); 
        fwrite($fp, $New, 80000); 
        fclose( $fp ); 
}

        $filename = "GuestBook.txt";


        $fp = fopen( $filename,"r"); 
        $Data = fread($fp, 80000); 
        fclose( $fp );

        $DataArray = split (".:::.", $Data);

        $NumEntries = count($DataArray) - 1;

        print "&TotalEntries=$NumEntries&NumLow=$NumLow&NumHigh=$NumHigh&GuestBook=";
        for ($n = $NumLow; $n < $NumHigh; $n++) {
        print $DataArray[$n];
        }
        
?> 
takto by to malo fungovat, ak som zabudol na nejaku premennu, tak ju dopln rovnakym sposobom.

good luck.
zupanok
Medium Star
Medium Star
Príspevky: 325
Registrovaný: 19 dec 2005, 18:43
Bydlisko: MT

Príspevok od používateľa zupanok »

z názvu stránky mi je jasné, že sa jedná o FREEHOSTING na SZM.SK
freehosting na szm.sk je BEZ podpory PHP,
podporu php poskytujú až od plateného hostingu BONUS PLUS (60Sk/mes.)
inak je pravda to s register_globals, čo tu bolo písané, avšak málo mu pomôže na szm. sk freehostingu,
okrem iného píšu to vo svojej ponuke, každý si to môže prečítať, prv než sa k tomu vyjadrí, a okrem toho tiež mám na szm.sk svoje stránky na freehostingu, a kvôli php som musel prejsť na iný hosting
JurijRubanov
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 256
Registrovaný: 01 sep 2006, 12:21
Bydlisko: Prievidza
Kontaktovať používateľa:

Príspevok od používateľa JurijRubanov »

Ono som samotny guestbook hodil na szm iba na demonstraciu problemu. Ten vsak pretrvava aj po nepouzivani globalnych premennych na serveri plne podporujucom PHP (avsak s vypnutym nastavenim register_globals). Preto by som Vas chcel poziadat este raz o radu, ktora sa tyka mojho problemu (kedze okolo PHP som sa zacal motat asi iba pred tyzdnom). Netreba nejaky ten script zmenit aj v samotnok flashi? Pretoze samotna uprava PHP nezabrala. Taktiez atributy su nastavene na 777, takze vskutku netusim, co som este mohol v tomto skriptiku dovrzat.
IgiPoP
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 446
Registrovaný: 12 sep 2005, 8:17
Bydlisko: MT

Príspevok od používateľa IgiPoP »

teraz uz by to malo byt funkcne
//testovane na localhoste s PHP5

Kód: Vybrať všetko

<?php
$filename = "GuestBook.txt";

$Name = $_POST['Name'];
$Email = $_POST['Email'];
$Comments = $_POST['Comments'];
$Website = $_POST['Website'];
$Submit = $_POST['Submit'];
      
$NumLow =  (isSet($_GET['NumLow']))?$_GET['NumLow']:$_POST['NumLow'];
$NumHigh = (isSet($_GET['NumHigh']))?$_GET['NumHigh']:$_POST['NumHigh'];

$Name = stripslashes($Name);
$Email = stripslashes($Email);
$Website = stripslashes($Website);
$Comments = stripslashes($Comments);
        
$medzera="  ";

if ($Submit == "Yes") 
{
  if( file_exists($filename) )
  {
    $fp = fopen( $filename,"r"); 
    while (!feof($fp)) {
      $OldData .= fread($fp, 1024);
    }
    fclose( $fp );
  }
  else
    $OldData = "";

  $Today = date("d.m.Y (H:i:s)");

  $Input = "<b>Meno:</b> $Name $medzera <b>Kedy:</b> $Today $medzera <b>Website: </b><a href=\"http://$Website\" target=\"_blank\"><u>$Website</u></a><br><b>Predmet: </b>$Email <br><b>Odkaz: </b>$Comments<br><br>.:::.";
  $New = $Input.$OldData;

  $fp = fopen( $filename,"w+"); 
  fwrite($fp, $New); 
  fclose( $fp ); 
}
if( file_exists($filename) ) 
{
  $fp = fopen( $filename,"r"); 
  while (!feof($fp)) {
    $Data .= fread($fp, 1024);
  }
  fclose( $fp );

  $DataArray = explode(".:::.", $Data);
  $NumEntries = count($DataArray)-1;

  for ($n = $NumLow; $n < $NumHigh; $n++) {
    $Book.= $DataArray[$n];
  }
}
print "&TotalEntries=".((isset($NumEntries))?$NumEntries:0)."&NumLow=".$NumLow."&NumHigh=".$NumHigh."&GuestBook=".((isset($Book))?$Book:"");       
?>
good luck.
Napísať odpoveď