Hei,
minulla on ongelma. Olen opetellut PHP:tä ja MySQL:ää ja tein sivut joissa on kirjautuminen. Nyt kun kirjaudun sisään, sivu näkyy oikein mutta kun painan kirjautumisen jälkeen jotain linkkiä katoaa "top" divin sisältö.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <link href="style.css" rel="stylesheet" type="text/css"> <title></title> </head> <body> <div id="top"> <?php if (isLogdin() == true) { echo "<br />"; echo "<a href='log_out.php'>Log out</a>"; if (isAdmin() == true) { echo " <a href='index.php?s=admin'>Admin</a>"; } } ?> </div> <div id="main"> <?php //Virheilmoitukset näkyviin ini_set("display_errors", 1); ini_set("error_reporting", E_ALL | E_STRICT); //Varsinainen koodi alkaa session_start(); $s = $_GET['s']; if (isLogdin == true) { if ($s == null) { include ("etusivu.php"); } else if ($s == admin && isAdmin() == true) { include ("admin.php"); } } if (isLogdin() == false) { include ("log_in.php"); //echo "Tai rekisteröidy <a href='index.php?s=register'>täällä</a>."; $s = $_GET['s']; if ($s == "register") { echo "<br />"; echo "<br />"; include ("register.php"); } } function isLogdin() { if ($_SESSION["logdin"] != "") { return true; } else { return false; } } function isAdmin() { if ($_SESSION["logdin"] == "Viped") { return true; } else { return false; } }
Johtuisiko siitä, että kutsut session_start() funktiota liian myöhään? Senhän pitäisi olla ennen tulostuksia? Koodissa on toki muitakin kummallisuuksia, mutta vastasin vain itse kysymykseen.
Siinähän se oli. Kiitos. Liian aamu ilmeisesti kun en tuota tajunnut. Varmasti on aika purkkaa siellä täällä tuossa koodissa, mutta sen siitä saa kun itsenäisesti opiskelee. Onko halua ja aikaa vihjaista oikeaan suuntaan?
Viped kirjoitti:
Tässä esimerkiksi puuttuvat hipsut admin sanan ympäriltä. Ellet sitten ole luonut kyseisen nimistä vakiota. Vakion käyttö tosin olisi varsin fiksua. Vakiot tunnistaa vakioiksi yleensä KAPSEILLA kirjoitetusta nimestä.
Viped kirjoitti:
Tämähän on selkeä else haara edelliselle if-lauseelle, joten uutta if-lausetta ei ole fiksua tehdä. Helpottaa lukemistakin varsinkin pidemmissä koodeissa aikanaan.
Viped kirjoitti:
Kokeilepa
Kiitos paljon! Täytyykin perehtyä noihin vakioihin nyt samantien. Tuohon issettiin olen joskus aikasemmin jo tutustunitkin, en tiedä miksen sitä nyt käyttänyt. Kiitos vinkeistä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.