Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Header? Miten....

Sivun loppuun

TH [03.01.2004 20:33:35]

#

En tiedä olenko tehnyt alkuunsakaan oikein, mutta en ole muutakaan keinoa keksinyt.

Olen käyttänyt sivujen ohjauksessa headeria, esim. "header("Location: testi.php");", mutta jostain syystä ei toimi oikein kunnolla.
Eräällä sivulla minulla on niitä PHP-koodissa useita, ja ne määräytyvät if-lauseen mukaan. Mutta jostain syystä sivu näyttää ohjautuvan kaikkein alimman "headerin" mukaan..

Kuuluuko headeria edes käyttää tällä tavoin? Vain onko olemassa jokin toinen eteenpäinohjausmenetelmä? Käytän niitä esimerkiksi ohjaamaan käyttäjä sivulle jossa näkyy jokin viesti kun on kirjautunut, esim. "Tervetuloa!"..

Olenko edes käsittänyt oikein, keskeyttääkö header koodin lukemisen ja siirtää määrätylle sivulle?

ajv [03.01.2004 20:44:22]

#

Kyllä header()-funktiota voi käyttää valintarakenteiden avulla usemman kerran samalla sivulla. Varmaankin sun if-lauseet kusee sit jotenkin...

TH [03.01.2004 20:56:42]

#

Muuten ne toimivat moitteettomasti paitsi juuri tuon headerin osalta. :)

Teme [03.01.2004 21:01:55]

#

Tota noin, pasteetkos sun koodin tähän, sitten olis sata kertaa helpompi korjaita virheitä? Ja yks pyyntö: Jos laitat koodin tänne, niin saiskos sen kooditagien väliin, ellet oo niin jo aikasemmin tehny. Helpottaa muuten kummasti koodin lukemista jos se on tagien sisällä :P Hehe.

TH [03.01.2004 21:18:20]

#

Tein testauksen:

<?php
// testi

$joo = "jei";

if ($joo == "jei")
{
  header("Location: index.php");
}
elseif ($joo == "hei")
{
  header("Location: log_in.php");
}

header("Location: register.php");
?>

Ja se menee aina tuohon register.phpeehen, oli $joo "jei" tai "hei"..

Teme [03.01.2004 21:28:35]

#

Hehe, tottakai se menee, koska sille ei ole annettu ehtoa. Se suoritetaan jokatapauksessa. Kokeiles näin:

<?php
// testi

$joo = "jei";

if ($joo == "jei")
{
  header("Location: index.php");
}
elseif ($joo == "hei")
{
  header("Location: log_in.php");
}
else
{
  header("Location: register.php");
}
?>

Laitat ton viimeisen headerin elsen sisään, niinkun tossa ylläolevassa koodissa se on, sitte voi toimiakki. Eli, jos muuttuja $joo ei ole "jei" tai "hei", niin sillon se ohjaa tohon register.php -tiedostoon.

k-mikko [03.01.2004 21:36:56]

#

Toimisi se näinkin

<?php
// testi

$joo = "jei";

if ($joo == "jei")
{
  header("Location: index.php");
  exit();
}

elseif ($joo == "hei")
{
  header("Location: log_in.php");
  exit();

}

header("Location: register.php");
exit();

?>

On tosin silti järkevämpää sijoittaa tuo viimeinenkin header() saman if-lauseen sisään.

TH [03.01.2004 22:08:09]

#

Hmmm, hämärä komento.. :)
Eli sitä ei siis voi suorittaa toisistaan erillisissä ehtolauseissa? Miksi ei?
Esim:

<?php
// testi

$joo = "jei";

if ($joo == "jei")
{
  header("Location: index.php");
}

if ($joo == "hei")
{
  header("Location: log_in.php");
}
?>

Mitä tuo exit(); tekee?

k-mikko [03.01.2004 22:22:13]

#

lainaus:

Hmmm, hämärä komento.. :)

header()-funktio lähettää headerin (mikä se on suomeksi?), mutta ei lopeta skriptin suorittamista. Tämän takia alkuperäinen skriptisi ei toiminut oikein. Ohjelma lähetti kyllä oikean uudelleenohjaus-headerin, mutta skriptin lopussa lähetetty toinen uudelleenohjaus-header jäi voimaan lopulta ja käyttäjä ohjattiin väärään paikkaan.

lainaus:

Esim:

<?php
// testi

$joo = "jei";

if ($joo == "jei")
{
  header("Location: index.php");
}

if ($joo == "hei")
{
  header("Location: log_in.php");
}
?>

Kyllä tämä onnistuu, headereita lähetetään vain yksi, koska toinen ehtolauseista on epätosi.

Jos molemmat ehtolauseet olisivat tosia, käyttäjä ohjattaisiin log_in.php -sivulle, koska se on jälkimmäisenä ohjauksista.

lainaus:

Mitä tuo exit(); tekee?

exit() lopettaa ohjelman suorituksen siihen paikkaan.

<?php
     print "Moi!";
     exit();
     print "Terve!";

     //Tulostaa Moi!
?>

Teme [03.01.2004 22:36:36]

#

Jeps, tapoja on monia. Yksi ainakin olisi switch-rakenne, mutta perinteiset if-lauseet roksaa :]

Muuten, exit(); = die();

TH [03.01.2004 22:58:22]

#

Ahaa, kiitokset hyvistä vastauksista, erityisesti k-mikon vastaus oli mitä halusin tietää!
Yksi ongelma taas pois pelistä.. *thumbs up*

kenkku [03.01.2004 23:07:55]

#

lainaus:

header()-funktio lähettää headerin (mikä se on suomeksi?)

Otsikkotiedot?

Draiz [03.01.2004 23:19:10]

#

lainaus:

mikä se on suomeksi

ylätunniste? xD Katoin sanakirjasta.

Pikseli [04.01.2004 01:05:30]

#

lainaus:

lähettää headerin (mikä se on suomeksi?)

HTTP-otsake(tieto) on mielestäni ymmärrettävä ja kuvaava termi sekä hyvää suomen kieltä.

Otsikoista puhuminen voidaan sekoittaa joskus muihin asioihin, kuten HTML:n TITLE- ja H1 - H6-elementteihin.

Edit: tämä boardi ei nähtävästi tykkää lyhyen ajatusviivan (n-viiva) käytöstä, vaan muuttaa sen muotoon "& a m p ; # 8 2 1 1 ;" (lisätty välilyönnit, jottei tuo taas sotkeutuisi uudelleen). Voisikohan tuohon saada korjausta, sillä oletetavasti se tekee silloin samaa monille muillekin merkeille?

Teme [04.01.2004 09:49:58]

#

Noniin, olisiko tämän asian kohdalta pilkunnussiminen ohitse :)

Antti Laaksonen [04.01.2004 22:43:28]

#

lainaus:

Voisikohan tuohon saada korjausta, sillä oletetavasti se tekee silloin samaa monille muillekin merkeille?

Vika liittyi ilmeisesti ASCII-merkistön ulkopuolisiin merkkeihin. Nyt pitäisi näidenkin merkkien näkyä oikein. ☺

Blaze [04.01.2004 23:00:12]

#

Tesmitääs...
? ? ?? ?

Edit: Ja pah, sanon minä. Ensimmäinen oli euromerkki, toinen kyrillinen kirjain zhe, seuraavat pari hiraganaa ja viimeinen smailinaama. Hyvin näkyy kaikki, juu :)

Edit2: Tulipas mieleen kokeilla vaihtaa selainta...

€ Ж ばか ☺

Edit3: Jaahas, jaahas. Pitääpäs näköjään tutkailla Operan asetuksia...


Sivun alkuun

Vastaus

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

Tietoa sivustosta