Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: päivämäärä vieraskirjassa + muita ongelmia

Sivun loppuun

merlin [26.12.2010 21:50:20]

#

Heips, tekaisin tuossa ohjelmointiputkan php-oppaan avulla vieraskirjan sivuilleni. Ongelmia on kuitenkin monia...

1. En osaa asettaa viesteille lähetysaikaa
2. Lähetettäessä tuo herjaa, ettei tiedä minne mennä lähettämisen jälkeen - osoite siis väärin, mutta olen kokeillut vaikka minkälaisia versioita... (index.php, vieraskirja/index.php, http://rantaminttu.net/hemppa/vieraskirja/index.php, http://rantaminttu.net/hemppa/index2.php?sivu­=vieraskirja/index.php)
3. Miten tuossa textareassa saa rivinvaihdot toimimaan. Nyt kun siihen laittaa rivinvaihtoja niin se heittää tuolla .txt tiedostossa sen tietysti monelle riville ja tuo käsittelee sen monena eri viestinä eri rivitysten takia...

Antti Laaksonen [26.12.2010 22:02:22]

#

Kohdat 1 ja 3: Nämä asiat sisältyvät oppaan vieraskirjaan. Voit siis tallentaa funktion time antaman aikaleiman tiedoston ja näyttää sen perusteella lähetysajan funktion date avulla. Rivinvaihdot taas voi korvata <br>-tageilla, jolloin ne eivät aiheuta häiriötä tiedoston riveihin.

Kohta 2: Viimeisen ehdotuksesi (sivun täydellinen osoite) pitäisi ainakin toimia, jos siis käytät tällaista koodia:

header("Location: http://tahan.tulee.fi/sivun/taydellinen/osoite.php");

Metabolix [26.12.2010 22:07:26]

#

1. Aikaleiman saa time-funktiolla, ja sen voi (tulostusvaiheessa) muuttaa päivämääräksi date-funktiolla.

2. Miten olet yrittänyt tehdä ja millainen virheilmoitus tarkalleen tulee? Luettelostasi päätellen ohjauksen pitäisi näyttää tältä:

header("Location: http://rantaminttu.net/hemppa/vieraskirja/");

3. Voit tallentaa viestin enkoodattuna esim. funktiolla rawurlencode, jolloin latausvaiheessa täytyy vastaavasti purkaa se funktiolla rawurldecode.

Antti Laaksonen kirjoitti:

Rivinvaihdot taas voi korvata <br>-tageilla

Tekstin muuntaminen HTML-muotoon jo tallennusvaiheessa on yleensä huono idea. Parempi olisi muuttaa teksti vasta tulostuksen yhteydessä. Lisäksi oppaan vieraskirjassa on virhe stripslashes-funktion suhteen (koska eihän sitä nykyään pitäisi tarvita kuin poikkeustilanteissa) sekä siinä, että |-merkki viestissä sotkee järjestelmän.

merlin [26.12.2010 22:07:44]

#

Kiitos Antti, kokeilenpas tuota päivämääräjuttua :) ainoa ongelma tossa <br> tulee olemaan se, että miten saan kaikki kirjoittajat sitä käyttämään? Sivuilla kun käy 10-vuotiaitakin lapsia, joille käsite HTML on hepreaa (= vaikka kirjoittaisi kissan kokoisilla kirjaimilla ohjeet niin ei ne sisäistä sitä :D).

Ja tuota täydellistä osoitetta olen kokeillutkin :( Eikä toimi

muoks// multa ei onnistu mikään ilman tarkkaa selitystä x) joten tuo enkoodaus ei mene järkeen. Enkä hahmota, että minne kohtaan tuo:

$aika = time();

...pitäisi tunkea? Siihenkö kohtaan, jossa haetaan ne lomakkeen eri kohdat? + että onko edes oikea koodi...

Antti Laaksonen [26.12.2010 22:39:22]

#

merlin kirjoitti:

ainoa ongelma tossa <br> tulee olemaan se, että miten saan kaikki kirjoittajat sitä käyttämään?

Ideana oli, että viestin kirjoittaja voi kirjoittaa rivinvaihdot tavallisesti, mutta ne muutetaan HTML-muotoon viestin lähetyksen yhteydessä.

(Metabolix on oikeassa siinä, että viestin tallentaminen HTML-muodossa ei ole usein järkevää. Tässä tapauksessa se on kuitenkin minusta toimiva ratkaisu.)

merlin kirjoitti:

Ja tuota täydellistä osoitetta olen kokeillutkin :( Eikä toimi

Miten tarkalleen kutsut header-funktiota? Missä tiedostossa kutsut sitä?

merlin kirjoitti:

Enkä hahmota, että minne kohtaan tuo:

Tuo koodi selvittää nykyhetken aikaleiman, jonka voit tallentaa tiedostoon viestin muiden tietojen yhteyteen. Eli järkevä paikka koodille on vähän ennen viestin tallennusta tiedostoon.

jimi-kimi [27.12.2010 00:22:10]

#

https://www.php.net/manual/en/function.nl2br.php <-- rivinvaihto <br /> tagiksi

Lue:
http://www.scratchprojects.com/2006/05/php_guestbook_script_p01.php

Vaihtoehtoisesti, jos lontoo ei taivu..
http://translate.google.com/translate?js=n&prev­=_t&hl=fi&ie=UTF-8&layout=2&eotf=1&sl=en&tl=fi&u=http://www.scratchprojects.com/2006/05/php_guestbook_script_p01.php&act=url

combo [27.12.2010 12:39:55]

#

merlin kirjoitti:

ainoa ongelma tossa <br> tulee olemaan se, että miten saan kaikki kirjoittajat sitä käyttämään? Sivuilla kun käy 10-vuotiaitakin lapsia, joille käsite HTML on hepreaa (= vaikka kirjoittaisi kissan kokoisilla kirjaimilla ohjeet niin ei ne sisäistä sitä :D).

Ja tuota täydellistä osoitetta olen kokeillutkin :

Jos vieraskirjan tekstikentän nimi on "viesti" (<textarea name="viesti"></textarea>), niin nuo rivinvaihdot saa muutettua <br> -tagiksi tällä koodilla:

$viesti = str_replace("\n", "<br>", $viesti);

Tuo tulee sitten sinne käsittely sivulle, jossa kaikkien kenttien tiedot käsitellään ja tallennetaan tekstitiedostoon.

Yritin lähettää vieraskirjaasi viestiä ja silloin tuli virheviesti, josta selvisi että olit suomentanut funktion time(); aika(); :ksi
Näin pitäisi toimia tuo ajan ottaminen:

//otetaan talteen aika, jolloin viesti lähetettiin
   $aika = time();

   //muodostetaan tiedostoon tallennettava rivi
   $rivi = "$nimi|$email|$aika|$viesti\n";

Eli teet tuon mallin mukaan niin eiköhän pitäisi toimia, älä muuta funktiota time();.

merlin [27.12.2010 13:06:05]

#

Oikeesti oon ihan ulapalla, minne kohtiin nuo täytyy tunkea x) Tässä siis sinun läheta.php koodi:

<?php
//jos nimeä ei ole annettu, näytetään lomake...
if (!isset($_POST['nimi'])) {
?>

  <h1>Kirjoita viesti vieraskirjaan</h1>

  <p><a href="http://rantaminttu.net/hemppa/index2.php?sivu=vieraskirja/index.php"><- Takaisin</a></p>

  <form action="http://rantaminttu.net/hemppa/index2.php?sivu=vieraskirja/laheta.php" method="post">
  <p><center><table class="lahetys">
  <tr>
  <td class="lahetys1" valign="top">
  Nimi:<br/>
  Sähköposti:<br />
  Sivusi nimi:<br />
  Sivusi URL:<br />
  Viestisi:</td>
  <td class="lahetys2" valign="top">
  <input type="text" name="nimi" class="loota" /> <br />
  <input type="text" name="sposti" class="loota" /> <br />
  <input type="text" name="sivu" class="loota" /> <br />
  <input type="text" name="sivuURL" class="loota" /> <br />
  <textarea name="viesti" class="loota2" rows="8" cols="35">Tämä on tekstikenttä</textarea><br />
  <input name="vastaus" type="hidden" /><br />
  <center><input type="submit" value="Lähetä" class="lahetanappi"></center></td></tr></table></center><br />
  </form>


<?php
//...muussa tapauksessa kirjoitetaan viesti tiedostoon
} else {
   //avataan tiedosto append-tilassa: kirjoitetaan tiedoston loppuun
   $tiedosto = fopen("vieraskirja/viestit.txt", "a");

   //haetaan lomakkeen kautta tulleet muuttujat
   $nimi = $_POST['nimi'];
   $sposti = $_POST['sposti'];
   $sivu = $_POST['sivu'];
   $sivuURL = $_POST['sivuURL'];
   $viesti = $_POST['viesti'];

   //muodostetaan tiedostoon tallennettava rivi
   $rivi = "$nimi|$sposti|$sivu|$sivuURL|$viesti|$vastaus\n";

   //kirjoitetaan rivi tiedostoon
   fwrite($tiedosto, $rivi);

   //suljetaan tiedosto
   fclose($tiedosto);

   //ohjataan käyttäjä vieraskirjasivulle
   header("Location: http://rantaminttu.net/hemppa/index2.php?sivu=vieraskirja/index.php");
}
?>

combo [27.12.2010 13:12:39]

#

<?php
//jos nimeä ei ole annettu, näytetään lomake...
if (!isset($_POST['nimi'])) {
?>

  <h1>Kirjoita viesti vieraskirjaan</h1>

  <p><a href="http://rantaminttu.net/hemppa/index2.php?sivu=vieraskirja/index.php"><- Takaisin</a></p>

  <form action="http://rantaminttu.net/hemppa/index2.php?sivu=vieraskirja/laheta.php" method="post">
  <p><center><table class="lahetys">
  <tr>
  <td class="lahetys1" valign="top">
  Nimi:<br/>
  Sähköposti:<br />
  Sivusi nimi:<br />
  Sivusi URL:<br />
  Viestisi:</td>
  <td class="lahetys2" valign="top">
  <input type="text" name="nimi" class="loota" /> <br />
  <input type="text" name="sposti" class="loota" /> <br />
  <input type="text" name="sivu" class="loota" /> <br />
  <input type="text" name="sivuURL" class="loota" /> <br />
  <textarea name="viesti" class="loota2" rows="8" cols="35">Tämä on tekstikenttä</textarea><br />
  <input name="vastaus" type="hidden" /><br />
  <center><input type="submit" value="Lähetä" class="lahetanappi"></center></td></tr></table></center><br />
  </form>


<?php
//...muussa tapauksessa kirjoitetaan viesti tiedostoon
} else {
   //avataan tiedosto append-tilassa: kirjoitetaan tiedoston loppuun
   $tiedosto = fopen("vieraskirja/viestit.txt", "a");

   //haetaan lomakkeen kautta tulleet muuttujat
   $nimi = $_POST['nimi'];
   $sposti = $_POST['sposti'];
   $sivu = $_POST['sivu'];
   $sivuURL = $_POST['sivuURL'];
   $viesti = $_POST['viesti'];
   // Muutetaan tekstikentän rivinvaihdot br -tagiksi
   $viesti = str_replace("\n", "<br>", $viesti);
   // Aika, jolloin viesti lähetetään
   $aika = date("H:i");

   //muodostetaan tiedostoon tallennettava rivi
   $rivi = "$nimi|$sposti|$aika|$sivu|$sivuURL|$viesti|$vastaus\n";

   //kirjoitetaan rivi tiedostoon
   fwrite($tiedosto, $rivi);

   //suljetaan tiedosto
   fclose($tiedosto);

   //ohjataan käyttäjä vieraskirjasivulle
   header("Location: http://rantaminttu.net/hemppa/index2.php?sivu=vieraskirja/index.php");
}
?>

Lisäsin tuon ajan tallentamisen ja rivinvaihdot br -tagiksi.

Toimiiko?

Mulla ainakin toimii.

merlin [27.12.2010 13:50:03]

#

mulla toimii :) (siis nuo muokkaamasi jutut, ainoa mikä ei toimi on vielä tuo ohjaus pois tuolta sivulta... osoite on todellakin tuo mikä tuossa headerissa on, mutta se ei toimi)

jimi-kimi [27.12.2010 14:03:52]

#

https://www.php.net/manual/en/function.ob-start.php
"<?php" tagin jälkeen ennen mitään tulosteluita

combo [27.12.2010 14:06:26]

#

<?php ob_start();?>
<?php
//jos nimeä ei ole annettu, näytetään lomake...
if (!isset($_POST['nimi'])) {
?>

  <h1>Kirjoita viesti vieraskirjaan</h1>

  <p><a href="http://rantaminttu.net/hemppa/index2.php?sivu=vieraskirja/index.php"><- Takaisin</a></p>

  <form action="http://rantaminttu.net/hemppa/index2.php?sivu=vieraskirja/laheta.php" method="post">
  <p><center><table class="lahetys">
  <tr>
  <td class="lahetys1" valign="top">
  Nimi:<br/>
  Sähköposti:<br />
  Sivusi nimi:<br />
  Sivusi URL:<br />
  Viestisi:</td>
  <td class="lahetys2" valign="top">
  <input type="text" name="nimi" class="loota" /> <br />
  <input type="text" name="sposti" class="loota" /> <br />
  <input type="text" name="sivu" class="loota" /> <br />
  <input type="text" name="sivuURL" class="loota" /> <br />
  <textarea name="viesti" class="loota2" rows="8" cols="35">Tämä on tekstikenttä</textarea><br />
  <input name="vastaus" type="hidden" /><br />
  <center><input type="submit" value="Lähetä" class="lahetanappi"></center></td></tr></table></center><br />
  </form>


<?php
//...muussa tapauksessa kirjoitetaan viesti tiedostoon
} else {
   //avataan tiedosto append-tilassa: kirjoitetaan tiedoston loppuun
   $tiedosto = fopen("vieraskirja/viestit.txt", "a");

   //haetaan lomakkeen kautta tulleet muuttujat
   $nimi = $_POST['nimi'];
   $sposti = $_POST['sposti'];
   $sivu = $_POST['sivu'];
   $sivuURL = $_POST['sivuURL'];
   $viesti = $_POST['viesti'];
   // Muutetaan tekstikentän rivinvaihdot br -tagiksi
   $viesti = str_replace("\n", "<br>", $viesti);
   // Aika, jolloin viesti lähetetään
   $aika = date("H:i");

   //muodostetaan tiedostoon tallennettava rivi
   $rivi = "$nimi|$sposti|$aika|$sivu|$sivuURL|$viesti|$vastaus\n";

   //kirjoitetaan rivi tiedostoon
   fwrite($tiedosto, $rivi);

   //suljetaan tiedosto
   fclose($tiedosto);

   //ohjataan käyttäjä vieraskirjasivulle
   header("Location: http://rantaminttu.net/hemppa/index2.php?sivu=vieraskirja/index.php");
}
?>
<?php ob_end_flush();?>

Toimiskos nyt?

EDIT: Huomasin että vieraskirjan tulostumisessa päivämäärän erottimena on kaksoispiste (:). Onko kyseessä virhe?

Macro [27.12.2010 16:02:06]

#

Jos laittaisit date-funktioon kaksoispisteen tilalle pisteen, niin tulisiko piste?

Jurbe [28.12.2010 03:12:22]

#

//Tulostaa esimerkiksi 18:10
$aika = date("H:i");

//Tulostaa esimerkiksi 18.10
$aika = date("H.i");

//Tulostaa esimerkiksi 18,10
$aika = date("H,i");

Tajusit varmaankin kunnolla nyt?

villev [28.12.2010 10:34:55]

#

En kyllä tiedä, onko mitään järkeä tallentaa tiedostoon pelkästään aika (esim. 14:50) ilman päivää. Itse tallentaisin tiedostoon pelkästään aikaleiman funktiolla time(), ja hoitaisin muotoilut tulostusvaiheessa. Näin muotoilujen vaihtaminen on helpompaa.

merlin [28.12.2010 12:33:10]

#

Nyt laitoin sinne päivämääränkin :D Kiitos kaikille auttajille <3! Enää pitäisi tuo uudelleenohjaus saada toimimaan...

merlin [29.12.2010 20:48:13]

#

apuja tuohon uudelleenohjaukseen?

Metabolix [29.12.2010 21:02:46]

#

Laita ihan kooditiedoston alkuun seuraavat rivit:

<?php
ini_set("error_reporting", E_ALL | E_STRICT);
ini_set("display_errors", 1);

Kokeile tämän jälkeen, tuleeko sivulle jokin virheilmoitus, kun lähetät viestin.

merlin [29.12.2010 21:37:07]

#

lainaus:

Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Helsinki' for 'EET/2.0/no DST' instead in /home/rantamin/public_html/hemppa/vieraskirja/laheta.php on line 49

Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Helsinki' for 'EET/2.0/no DST' instead in /home/rantamin/public_html/hemppa/vieraskirja/laheta.php on line 49

Strict Standards: main() [function.main]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Helsinki' for 'EET/2.0/no DST' instead in /home/rantamin/public_html/hemppa/vieraskirja/laheta.php on line 52

Notice: Undefined variable: vastaus in /home/rantamin/public_html/hemppa/vieraskirja/laheta.php on line 52

Strict Standards: header() [function.header]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Helsinki' for 'EET/2.0/no DST' instead in /home/rantamin/public_html/hemppa/vieraskirja/laheta.php on line 61

Warning: Cannot modify header information - headers already sent by (output started at /home/rantamin/public_html/hemppa/index2.php:19) in /home/rantamin/public_html/hemppa/vieraskirja/laheta.php on line 61

ja koodihan on:

<?php ob_start();?>
<?php
ini_set("error_reporting", E_ALL | E_STRICT);
ini_set("display_errors", 1);

//jos nimeä ei ole annettu, näytetään lomake...
if (!isset($_POST['nimi'])) {
?>

  <h1>Kirjoita viesti vieraskirjaan</h1>

  <p><a href="http://rantaminttu.net/hemppa/index2.php?sivu=vieraskirja/index.php"><- Takaisin</a></p>

  <form action="http://rantaminttu.net/hemppa/index2.php?sivu=vieraskirja/laheta.php" method="post">
  <p><center><table class="lahetys">
  <tr>
  <td class="lahetys1" valign="top">
  Nimi:<br/>
  Sähköposti:<br />
  Sivusi nimi:<br />
  Sivusi URL:<br />
  Viestisi:</td>
  <td class="lahetys2" valign="top">
  <input type="text" name="nimi" class="loota" /> <br />
  <input type="text" name="sposti" class="loota" /> <br />
  <input type="text" name="sivu" class="loota" /> <br />
  <input type="text" name="sivuURL" class="loota" /> <br />
  <textarea name="viesti" class="loota2" rows="8" cols="35">Tämä on tekstikenttä</textarea><br />
  <input name="vastaus" type="hidden" /><br />
  <center><input type="submit" value="Lähetä" class="lahetanappi"></center></td></tr></table></center><br />
  </form>


<?php
//...muussa tapauksessa kirjoitetaan viesti tiedostoon
} else {
   //avataan tiedosto append-tilassa: kirjoitetaan tiedoston loppuun
   $tiedosto = fopen("vieraskirja/viestit.txt", "a");

   //haetaan lomakkeen kautta tulleet muuttujat
   $nimi = $_POST['nimi'];
   $sposti = $_POST['sposti'];
   $sivu = $_POST['sivu'];
   $sivuURL = $_POST['sivuURL'];
   $viesti = $_POST['viesti'];
   // Muutetaan tekstikentän rivinvaihdot br -tagiksi
   $viesti = str_replace("\n", "<br>", $viesti);
   // Aika, jolloin viesti lähetetään
   $aika = date("H:i d.m.Y");

   //muodostetaan tiedostoon tallennettava rivi
   $rivi = "$nimi|$sposti|$sivu|$sivuURL|$aika|$viesti|$vastaus\n";

   //kirjoitetaan rivi tiedostoon
   fwrite($tiedosto, $rivi);

   //suljetaan tiedosto
   fclose($tiedosto);

   //ohjataan käyttäjä vieraskirjasivulle
   header("Location: http://rantaminttu.net/hemppa/index2.php?sivu=vieraskirja/index.php");
}
?>
<?php ob_end_flush();?>

-tossu- [29.12.2010 23:49:43]

#

merlin kirjoitti:

Enää pitäisi tuo uudelleenohjaus saada toimimaan...

Vika on siinä, että tiedostossa on ennen headerien lähetystä jotain selaimelle lähetettävää tekstiä. Varmista, ettei ennen ob_start():ia mitään tekstiä, eikä edes byte order markia.

merlin [30.12.2010 11:49:56]

#

Ei siellä kyllä ole yhtikäs mitään, yllä koko koodi. Onkohan index.php tiedostossa jtn. häikkää?

  <h1>Hempan tallin vieraskirja</h1>

  <p><center><table class="vieraskirja">
<?php
//luetaan viestit taulukkoon
$viestit = file("vieraskirja/viestit.txt");
//käännetään taulukko, jolloin uusimmat viestit tulevat ylimmiksi
$viestit = array_reverse($viestit);
//viestien määrä on suoraan taulukon rivien määrä
$viestimaara = count($viestit);

//tulostetaan viestimäärä
echo "<p><a href=\"http://rantaminttu.net/hemppa/index2.php?sivu=vieraskirja/laheta.php\">Lähetä uusi viesti</a> | Yhteensä $viestimaara viestiä vieraskirjassa.</p><hr>";

//käydään jokainen viesti läpi
for ($i = 0; $i < $viestimaara; $i++) {
   //$viestit[$i] on merkkijono, joka sisältää viestin $i tiedot
   //pystyviivoilla erotettuna; jaetaan viestit $tiedot-taulukkoon
   $tiedot = explode("|", $viestit[$i], 7);

   //erotellaan tiedot omiin muuttujiinsa
   $nimi = $tiedot[0];
   $sposti = $tiedot[1];
   $sivu = $tiedot[2];
   $sivuURL = $tiedot[3];
   $aika = $tiedot[4];
   $viesti = $tiedot[5];
   $vastaus = $tiedot[6];

   //tulostetaan viesti
   echo "<tr><td class=\"viesti\"><p><b>Lähettäjä:</b> <a href=\"mailto:$sposti\">$nimi</a><br />";
   echo "<b>Sivusto:</b> <a href=\"$sivuURL\">$sivu</a><br />";
   echo "<i>$aika</i><br />";
   echo "<b>Viesti:</b> $viesti</p>
   <p><i>$vastaus</i></p></td></tr>";
}
?>

</table></center></p>

Lebe80 [30.12.2010 12:02:16]

#

merlin kirjoitti:

Ei siellä kyllä ole yhtikäs mitään, yllä koko koodi.

Mikäs tuo rivinvaihto sitten on heti ob_start():n jälkeen?

Eli älä sulje php-tägiä, varsinkaan kun heti perään avaat ne uudelleen. Tulostat todennäköisesti selaimelle pelkän rivinvaihdon, jonka seurauksena otsaketietoja ei voida enää lähettää.

Jos ajat myös index.php:n ennen tätä koodia, niin siellähän sinulla oli jo useampi rivi html-koodia tulostettavana selaimelle.

<?php ob_start();?>
<?php
ini_set("error_reporting", E_ALL | E_STRICT);
ini_set("display_errors", 1);

edit:
Lisäksi kannattaa opetella tekemään asiat niin, ettei monessa skriptissä olisi samoja "koodeja". Eli opettele pistämään lomake omaan php-skriptiinsä niin, että lomake tulostetaan ja käsitellään samassa skriptissä. Nythän ymmärtääkseni sinulla on sama lomake sekä index.php -tiedostossa, että index2.php -tiedostossa. Samalla kannattaa opetella nimeämään php-tiedostot myös selkeästi, mikä auttaa tietenkin sinua ymmärtämään jälkeenpäin pelkän tiedostonimen perusteella, mitä mikin php-tiedosto tekee, ja mikä auttaa myös hakukoneita ymmärtämään mitä kyseinen skripti tekee.

merlin [30.12.2010 12:29:20]

#

tuo index on siis vieraskirja/index.php ja index2.php on tuolla alakansiossa oma sivunsa, koska sinne on tulossa vielä tervetulosivu.

Ja siis miten tässä nyt pitää menetellä, näinkö? :

<?php ob_start();
ini_set("error_reporting", E_ALL | E_STRICT);
ini_set("display_errors", 1);
jne.

Metabolix [30.12.2010 12:48:59]

#

Mitä sivulle tulostuu, jos laitat tuonne alkuun näin:

Toivottu tulos: %3C%3Fp

Byte order mark on täysin näkymätön merkkisarja, joka tiedostoon tulee, jos sen tallentaa vääränlaisella tekstieditorilla UTF-8-muodossa (tai nimenomaan UTF-8 with BOM -muodossa).

Virheilmoitukset paljastavat lisäksi seuraavaa:

Lisäksi koodissasi on ns. XSS-aukko: koska olet poistanut oppaassa käytetyn htmlspecialchars-rivin, viestiin voi kirjoittaa sekaan HTML- ja JavaScript-koodia, jolla voi aiheuttaa sivuillesi ongelmia ja esimerkiksi varastaa käyttäjien tietoja.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta