Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ongelma keksien kanssa

Sivun loppuun

Mee [23.01.2007 15:11:30]

#

Miksiköhän seuraavanlainen ei toimi?

<?php
$keksi = $_COOKIE["tyyli"];
echo "<body bgcolor='{$keksi}'>";
?>
<?php
$styyli = $_GET[styletype];
setcookie("tyyli", $styyli);
?>
<form method="GET" action="styyle.php">
<select name="styletype">
<optgroup label='Tyylin vaihto'>
<option value="blue" >Sininen</option>
<option value="orange" >Oranssi</option>
<option value="white" selected="selected">Valkonen</option>
<option value="green" >Vihreä</option>
</select>
<input type="submit" value="Vaihda" />
</form>

Tulee seuraavanlaista:
Warning: Cannot modify header information - headers already sent by (output started at /home/customer/s/e/se/se/se/jase.php:5) in /home/customer/n/i/niinpa/ei/taa/toimi.php on line 10

Myanda [23.01.2007 15:20:47]

#

Keksit pitää lisätä aivan sivun alussa, ennen kuin mitään on tulostettu html-dokumenttiin. Toinen vaihtoehto on pistää aivan sivun alkuun <?php ob_start(); ?> ja aivan sivun loppuun <?php ob_end_flush(); ?>

:)

Tinqe [23.01.2007 15:22:53]

#

Et saa tulostaa selaimelle mitään ennen keksin asettamista.

Näin yksinkertaisesti sanottuna. Lisäksi tuohon kannattaa lisätä tarkistus, jos uusi arvo annetaan niin vaihdetaan vain silloin tuota keksin arvoa.

Edit: Hidas.

Mee [23.01.2007 15:24:18]

#

Lisäsin nuo koodit alkuun ja loppuun. Toimii kuin unelma kiitos. Vielä kysyin sen saako mitenkään tarkastettua onko tietyn keksin sisältö vaikkapa "valkoinen", ja jos on php tulostaisi sivulle esim: "Valkoinen löytynyt!"

Blaze [23.01.2007 15:26:47]

#

Mee kirjoitti:

saako mitenkään tarkastettua onko tietyn keksin sisältö vaikkapa "valkoinen", ja jos on php tulostaisi sivulle esim: "Valkoinen löytynyt!"

Kaikki keksit löytyvät $_COOKIE-taulukosta. Tiettyyn keksiin pääset käsiksi $_COOKIE['keksinnimi']

tsuriga [23.01.2007 15:41:39]

#

ob-ratkaisu on yleensä se purkkaratkaisu, pistä mieluummin suosiolla sinne sivun alkuun se keksin asettaminen.

Mee [23.01.2007 15:59:12]

#

Seuraavaan kysymykseen :
Miten voin tarkistaa sen, onko jossain tiedostossa 1 tai enemmän merkkejä?

tsuriga [23.01.2007 16:04:48]

#

filesize / strlen

Mee [23.01.2007 16:51:28]

#

Ja taas löytyi kysymys:

Miksi seuraava ei toimi?

<?php


$tiedosto = fopen("firstvisit.txt", "w");
fwrite ($tiedosto, "Visited");
fclose ($tiedosto);
?>
<?php

$numero = filesize('firstvisit.txt');

if (1 <= $numero)
    echo "Tämä on ensimmäinen kerta kun käyt sivuilla!";
else {
echo '';
}
?>

Tällä kertaa ei näytä virheilmoituksia mutta kirjoittaa kokoajan "Tämä on ensimmäinen kerta kun käyt sivuilla!". Eli mikä on problem?

ajv [23.01.2007 17:13:55]

#

Mee kirjoitti:

Eli mikä on problem?

No problem on, että 1 <= $numero. Eli mitä tuossa teet:

1. Kirjoitat tiedostoon
2. Tarkastat onko tiedostossa dataa ja tulostat

Mieti mitä pitäisi tehdä toisinpäin... :)

Mee [23.01.2007 17:19:43]

#

ajv kirjoitti:

Mee kirjoitti:

Eli mikä on problem?

No problem on, että 1 <= $numero. Eli mitä tuossa teet:

1. Kirjoitat tiedostoon
2. Tarkastat onko tiedostossa dataa ja tulostat

Mieti mitä pitäisi tehdä toisinpäin... :)

Nyt en kyllä tajua mikä on väärin. Nuori vielä joten ei tajua mitä tehdä

Cornix [23.01.2007 17:24:55]

#

no nuo kohat toisippäi eli tarkista ensi, onko tiedostossa jotaki ja jos ei ole, kirjota se filu. nyt kirjotat ensi ja tarkistat onko siellä mitään.. tietysti on, koska just ennen kirjotit sinne.

ajv [23.01.2007 17:24:56]

#

No, tarkasta ennen tiedostoon kirjoittamista, että onko siellä tiedostossa dataa ja teet tuon tulostuksen. Kirjoituksen jälkeen tiedostossa on aina dataa.

Äh, sekunnin liian hidas... :(

Mee [23.01.2007 17:38:22]

#

Tämmösenpä sitten tein, mutta nyt ei lisää tiedostoon mitään ja tulostaa "Tämä on ensimmäinen...".

<?php

$numero = filesize('firstvisit.txt');

if ($numero <= 1)
    echo "";
else {
    echo "Tämä on ensimmäinen kerta kun käyt sivuilla!
<?php


$tiedosto = fopen('firstvisit.txt', 'w');
fwrite ($tiedosto, 'Visited');
fclose ($tiedosto);
?>
";
}
?>

Eli miten se pitäisi toteuttaa parhaimmiten?

Kaiffa [23.01.2007 19:55:18]

#

Tuosta kannattais ottaa ehkä keskeltä pois tuo ylimääräinen <?php.

Blaze [23.01.2007 21:03:56]

#

Mee kirjoitti:

Tämmösenpä sitten tein, mutta nyt ei lisää tiedostoon mitään ja tulostaa "Tämä on ensimmäinen...".

Et voi echolla tulostaa PHP-koodia niin, että se suoritettaisiin.


Sivun alkuun

Vastaus

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

Tietoa sivustosta