Globale Variablen

thedoc

Grünschnabel
Hallo erstmal!
ich hab da ein problem mit globalen variablen.
ich habe nach dem tut hier einen loginbereich mit sessions gemacht.
jetzt habe ich nur das problem dass ich die variable $user_eingeloggt einfach per aufruf in der url aendern kann. also z.b. datei.php?user_eingeloggt=true

wenn ich die variable aber innerhalb einer funktion definiere kann ich sie nicht von ausserhalb der funktion AUSLESEN, sprich ich kann nicht checken ob der user eingeloggt ist.
kann man die aenderung der variablen durch die URL irgendwie unterdruecken??

hoffentlich versteht mich hier einer =)

greetings thedoc
 
Also eigentlich dürfte die Änderung der Variable nicht funktionieren, da der Wert der durch den in der Session wieder überschrieben wird. Jedenfalls ist das bei mir so.

Zu dem Globalen:
PHP:
funtion Testfunktion () {
  global $user_eingeloggt;

  // Weiter mit den Ausführungen.
}
 
include ?

kann das vielleicht irgendwie daran liegen dass ich in der index.php nur kopf.php inhalt.php und fuss.php include?
 
Re: include ?

Original geschrieben von thedoc
kann das vielleicht irgendwie daran liegen dass ich in der index.php nur kopf.php inhalt.php und fuss.php include?

Mhh .... kann ich jetzt schlecht draus erkennen ob da vielleicht irgendwo ein Fehler vorliegt. Poste mal die index.php und die kopf.php
 
files

index.php:
<?php
include ("includes/kopf.php");


if (!isset($go))
{
$go = "news";
}


include("content/".$go.".php");



include ("includes/fuss.php");
?>
-------------------------------
kopf.php ist reines html das is nix besonderes
-------------------------------
fuss.php:
kleiner html rest vom layout halt und dann:

<center>
<?php


if ($user_eingeloggt) {
echo "Eingeloggt!\n";
} else
{
echo "<form action=\"index.php?go=checkuser\" method=\"post\">\n";
echo "Name: <input type=\"text\" name=\"name\" size=\"30\"> Kennwort: <input type=\"password\" name=\"pwrd\" size=\"30\"> <input type=\"submit\" value=\"Login\">\n";
echo "</form>\n";
}
?>

da muss wohl irgendwo der fehler sein oder?
-------------------------------
checkuser.php:



$sql = "SELECT * FROM t04user WHERE (uname like '$name') AND (pwrd = '$pwrd')";
$result = mysql_query ($sql, $db);


function check($result)
{

if (mysql_num_rows($result) > 0) {


$datenrichtig = true;


$user_eingeloggt = true;

} else {

$datenrichtig = false;


$user_eingeloggt = false;
}


session_register ("user_eingeloggt");
}

check($result);

?>

<html>
<head>
<?php if ($datenrichtig) { ?>
<meta http-equiv="Refresh" content="2; url=index.php?<?=session_name()?>=<?=session_id()?>">
<?php } ?>
</head>

<body>
<?php

if ($datenrichtig) {
echo "Vielen Dank für’s Einloggen. Sie werden weitergeleitet...";
} else {
echo "Die Daten $name : $pwrd waren falsch.";
}

?>
-------------------------------
btw: tausend dank fuer die hilfe!!!
greetings
 
Also soweit ich gesehen habe musst du in deine checkuser.php und kopf.php jeweils in der ersten Zeile folgendes einfügen:
PHP:
<?php session_start (); ?>

Ich hab nämlich in keiner der Dateien einen Aufruf und damit Start der Session gesehen.
 
so wie du das vorhattest funktionierts nicht
btw: in deinem tut stand man soll sich per icq oder email bei dir melden wenn was unklar is... sag doch mal deine UIN =)
 
Meine UIN ist ab sofort eingetragen. Ich glaube ich hab noch einen Fehler in deinem Login-Formular gefunden. Bin mir aber nicht sicher.

Du hast im <form>-Tag bei action "?go=checkuser" angehängt. Versuch doch mal die action bei "index.php" zu belassen und folgende Zeile noch in das Formular einzufügen:

<input type="hidden" name="go" value="checkuser">
 
ich glaube ich weiss jetzt in etwa woran es liegt.
eigentlich muesste ich session_start(); noch vor dem html header ausfuehren oder?
und da ich in der index.php, die date kopf.php include muss ich ja in der kopf.php noch vor dem header session_start(); callen.das hab ich auch gemacht und ich denke dass dort irgendwo der fehler sein muss. vielleicht funzt session_register() nicht weil ich die session in ner anderen datei starte oder so?
oder ich erzaehle einfach nur unsinn =)
klaer mich mal auf ;)

greetings thedoc
 

Neue Beiträge

Zurück