Ongelma PHP-koodin upottamisessa html-sivustoon!

Viestiketju Vapaata keskustelua -osiossa. Ketjun avasi Belknap 31.10.2008.

  1. Belknap

    Belknap Guest

    Heipä hei!

    Tässä vieraskirjaa laitellessani kotisivuille törmäsin ongelmaan:
    PHP:llä tehty vieraskirjani ei toimi missään muussa kohdin sivua kuin aivan ylimpänä eli ensimmäisenä ollessaan. Yritin sijoittaa sen sivuni keskiosan paikkeilla olevaan table -laatikkoon, mutta siinä se ei toiminut. Vieraskirjan etusivu (eli se, missä näkyy linkit "Kirjoita" ja "Lue") toimii kyllä moitteettomasti. Myös "Lue"-linkistä ohjautuvalle sivulle pääsee hyvin ja viestit myös näkyvät siinnä.

    Ongelma tulee vastaan siinä, kun painaa "Kirjoita"-linkkiä ja täyttää nimen yms. taulukkoon. "Tallenna"-painikkeen painamisen jälkeen edellä mainitsemaani table -laatikkoon pomppaa esiin vain virhe ilmoitus:

    Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/xxx.xxxxx.xxx/htdocs/vk.php:16) in /var/www/virtual/xxx.xxxxx.xxx/htdocs/vk.php on line 314

    Tästä virheilmoituksesta huolimatta kirjoitettu viesti tallentuu vieraskirjaan, sillä kun menee uudelleen vieraskirjan pääsivulle ja painaa "Lue"-linkkiä, kirjoitetut viestit lävähtävät esiin mukana myös viesti, jonka kirjoittaa virheilmoituksen tullessa.

    Nyt siis neuvoja tähän ongelmaan, please. :(
     
  2.  
  3. jippii12

    jippii12 Regular member

    Liittynyt:
    07.12.2005
    Viestejä:
    323
    Kiitokset:
    0
    Pisteet:
    26
    kuten virheilmotuksessa sanotaan, headeria ei voi muuttaa sen jälkeen kun sivulle on kirjoitettu jotain.

    Viestin kirjoittamisen jälkeen koodi ohjaa käyttäjän tiettyyn paikkaan, mutta tuo ohjaus voidaan tehdä vain jos se tapahtuu ennen kuin sivulle kirjoitetaan mitään html:ää, eli viestin tallennuksen hoitava koodi pitää suorittaa sivun ylälaidassa, näkyvän osio taas pitää laittaa erikseen sinne tableen
     
  4. Belknap

    Belknap Guest

    Kiitoksia jo tästä. Alkaa pikku hiljaa vähän aukeemaa tää ongelma. Tietäsikö joku vielä, että mikä osa tästä koodista pitäisi laittaa sivun alkuun -.-

    <?php

    /*
    * Guestbook is coded by Joni Järvinen a.k.a Jope <jope@psykoosi.org>
    * More scripts can be found at http://jope.psykoosi.org/ (Finnish site)
    *
    * This is a simple guestbook built on flatfile system so there is no
    * need for SQL database.
    *
    * Guestbook is very easy to use; just include this page into some of
    * your pages and it will automatically work.
    *
    * This guestbook could be optimized a little. For example when I
    * read data into array from datafile:
    * $data = Unserialize(Implode("", File($datafile))); ->
    * $data = Unserialize(File_Get_Contents($datafile));
    *
    * This is because file_get_contents() is pretty new function and
    * everyone doesn't have it so you can edit the script by yourself.
    *
    * Usage (Right way to use this guestbook):
    *
    * <?php
    * Ob_Start();
    * ?>
    * <html>
    * <head><title>My guestbook</title></head>
    * <body>
    * <?php include ("gusetbook.php"); ?>
    * </body>
    * </html>
    * <?php
    * $data = Ob_Get_Contents();
    * Ob_End_Clean();
    * echo $data;
    * ?>
    *
    */

    // File where guestbooks data is saved. (no need to change this)
    $datafile = "guestbook.dat";

    // Do NOT edit unless you know what you're doing!
    $Qstring = preg_replace("/&?act=(write|save|read)/i", "", $_SERVER["QUERY_STRING"]);
    $address = ($Qstring == "") ? "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"] : "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"] . "?" . $Qstring;
    if ($_GET["act"] == "write") {
    echo "<h2>Kirjoita vieraskirjaan!</h2>";
    if ($_GET["error"] == 1) {
    echo "<font color=\"#FF0000\">Täytä vähintään nimi ja viesti!</font>\n";
    }
    if ($Qstring == "") {
    echo "<form action=\"$address?act=save\" method=\"POST\">";
    } else {
    echo "<form action=\"$address&act=save\" method=\"POST\">";
    }
    echo "<small><b>Nimi:</b></small><br>
    <input type=\"text\" size=\"25\" maxlength=\"50\" name=\"nimi\"><br>
    <br>
    <small><b>Kotisivut:</b></small><br>
    <input type=\"text\" size=\"25\" maxlength=\"50\" name=\"kotisivut\" value=\"http://\"><br>
    <br>
    <small><b>Sähköposti:</b></small><br>
    <input type=\"text\" size=\"25\" maxlength=\"50\" name=\"email\"><br>
    <br>
    <small><b>Viestisi:</b></small><br>
    <textarea rows=\"6\" cols=\"36\" name=\"viesti\">
     
  5. Belknap

    Belknap Guest

    Ja jatkuu vielä sama tiedosto...

     
  6. Belknap

    Belknap Guest

    Njääh... Ei sen laittaminen tohon onnistukkaan. Tässä linkki, jossa koodi näkyy. Eli siis kysymys kuului: Mikä osa linkissä sijaitsevasta koodista täytyy laittaa sivun alkuun ja mikä "tableen"?

     
  7. jippii12

    jippii12 Regular member

    Liittynyt:
    07.12.2005
    Viestejä:
    323
    Kiitokset:
    0
    Pisteet:
    26
    tuossahan se näkyy
    eli <?php Ob_Start(); ?> ylälaitaan ja tableen tuo
    <?php include ("gusetbook.php"); ?> (pitäs varmaan olla "guestbook")

    ja jonnekkin alapuolelle vielä
    <?php
    $data = Ob_Get_Contents();
    Ob_End_Clean();
    echo $data;
    ?>
     
  8. Belknap

    Belknap Guest

    ONNISTUI!

    Sainpas sen toimimaan! Kunnia siitä kuuluu jippii12:lle. Monet kiitokset siis sulle jippii12!
     

Jaa tämä sivu