[ Vladica Savić @ 29.10.2008. 19:50 ] @
Zelim da mi PHP_HTML_Generate.php skripta koju pozovem iz neke php strane generise html stranu koja ce da bude ista kao ta strana sa koje pozovem PHP_HTML_Generate skriptu.

Ali, nesto se tu zbiva sto ne stima. Sta?

TestStrana.php

Code:

<html>
<head>
<title>
NASLOV FAJLA!
</title>
</head>
<body>
OVO JE NEKI SADRZAJ FAJLA!
</body>
</html>
<?php
header("Location: PHP_HTML_Generate.php?PHP_HTML_Generate=".$_SERVER["SCRIPT_NAME"]."?".$_SERVER["QUERY_STRING"]);
?>


PHP_HTML_Generate.php
Code:

<?php
function KreirajHTML($link,$HTML_Fajl)
{
   $DinamickiFajl = @fopen($link,"r");

       $SadrzajFajla= fread($DinamickiFajl,filesize($DinamickiFajl));

   fclose($DinamickiFajl);

   $StatickiFajl = @fopen($HTML_Fajl,"w");
   fwrite($StatickiFajl,$SadrzajFajla);
   fclose($StatickiFajl);
}


    $NastavakNaIme = rand();
    $ImeNovogFajla = $_SERVER["PHP_SELF"]."-HTML-".$NastavakNaIme;

    while (file_exists($ImeNovogFajla))
    {
      $NastavakNaIme = rand();
      $ImeNovogFajla = $_SERVER["PHP_SELF"]."-HTML-".$NastavakNaIme;
    }

            $DolaznaStranica = $_GET["PHP_HTML_Generate"];

            $Odakle = ltrim("$DolaznaStranica","/");

            $Gde ="Fajl-HTML-".$NastavakNaIme;

    echo "<br><br><br><br>$Odakle<br><br><br>$Gde<br><br>";


    KreirajHTML("$Odakle", "$Gde.html");
?>
[ Jbyn4e @ 29.10.2008. 20:57 ] @
A da objasnis sta ne stima, tj. sta se desi/ne desi?

I jos nesto... prvo, ne bi trebalo da imas ikakvog php koda posle </html> - browser tu zavrsava i ne nastavlja. Drugo, pogledaj
http://www.php.net/header
narocito deo koji pocinje sa "Remember".
[ Vladica Savić @ 29.10.2008. 21:10 ] @
Ne ucita se sadrzina fajla TestStrana.php i samim tim fajl koji nastane je prazan.

Probao sam i ovako:
Code:

<?php
ob_start();
echo "<html>
<head>
<title>
NASLOV FAJLA!
</title>
</head>
<body>
OVO JE NEKI SADRZAJ FAJLA!
</body>
</html>";
header("Location: PHP_HTML_Generate.php?PHP_HTML_Generate=".$_SERVER["SCRIPT_NAME"]."?".$_SERVER["QUERY_STRING"]);
ob_end_flush();
?>

...isti efekat :(
[ askaratazor @ 29.10.2008. 22:11 ] @
Ajmo ispocetka..
Ako odes na link koji je Jbyn4e rekao imas 4reda od pocetka ovo

Citat:
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

Code:
<html>
<?php
/* This will give an error. Note the output
 * above, which is before the header() call */
header('Location: http://www.example.com/');
?>


Znaci, heder ti ide pre svega, a ne na kraju, a pogotovo ne posle </html> taga
[ centaur @ 29.10.2008. 23:12 ] @
@askaratazor
Mogao bi i ti malo da bacis pogled na manual za ob_start.
Covek je definitivno procitao sta pise, sto se vidi iz njegovog drugog primera.
Kod mene je po defaultu namesten output_buffering na 4096, sto najverovatnije znaci da njemu problem uopste nije bio u tome.

@Vladica Savic
Kreni sa debagovanjem te skripte.
Idi korak po korak, dampuj jednu po jednu promenjivu i nacices gde je problem.

[ Vladica Savić @ 30.10.2008. 01:20 ] @
Sto je najgore, sve izgleda normalno?
Probao sam da nadjem gresku, debugovao sam skriptu, ali sve se izvrsava onim redom kojim treba, ali rezultat koji dobijam mi se ne slaze sa onim sto zelim da postignem.
[ Nemanja Avramović @ 30.10.2008. 07:02 ] @
Izbaci header/location i pozovi (include) fajl koji generiše HTML.

Evo ti (nešto kao) pseudo kod pa ti smisli

Code:
ob_start();

html/php kod

$rezultat = ob_get_flush(); //ovaj red nije obavezan OVDE ako ga staviš na početak fajla koji se inkluduje ispod

include("moje_funkcije.php");

Kreiraj_HTML($rezultat, "ime_fajla.html"); //ovaj red nije obavezan ako ono što radi funkcija prepraviš tako da radi čim se inkluduje fajl