Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP ylempi elementti kadottaa sisällön

Viped [24.06.2012 10:25:40]

#

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;
	}
}

Teuro [24.06.2012 10:49:15]

#

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.

Viped [24.06.2012 11:01:41]

#

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?

Teuro [24.06.2012 11:18:32]

#

Viped kirjoitti:

<?php
$s = $_GET['s'];
if (isLogdin == true) {
	if ($s == null) {
		include ("etusivu.php");
	} else if ($s == admin && isAdmin() == true) {
		include ("admin.php");
	}
}
?>

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:

<?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");
	}
}
?>

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:

function isLogdin() {
	if ($_SESSION["logdin"] != "") {
		return true;
	} else {
		return false;
	}
}

Kokeilepa

<?php
if(isset($_SESSION['logdin'])) { ... }
?>

Viped [24.06.2012 11:26:09]

#

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ä.

Vastaus

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

Tietoa sivustosta