Problem bei Ausgabe

spikaner

Quereinsteiger @ php
Hi , ich brüte hier seit gestern abend über nen Problem und find die Antwort net bzw. habe keine Lösung
PHP:
include("header.php");
if (!isset ($_SESSION["user_id"])) 
{ 
    $filename = 'formular.php';
    include($filename);
    include("fotter.php");
    die;
} 
if($_GET['ac'] != "")
    {
    $filename = "includes/".$_GET['ac'].".php";
    if(file_exists($filename)){
        include($filename);
    }
    else
    {
        echo "Datei nicht gefunden";
    }
}
So in etwa is meine index aufgebaut aber wie mache ich es das ich im header noch ein

If(isset($_SESSION['user_id'])){ ausgabe eingelogt }else{ ausgabe ausgelogt }

realisieren kann ohne das immer formular.php angezeigt wird sondern die Seiten die ich auch will ?

mfg Spikaner
 
Dazu legste die oben von dir genannte Bedingung ins Navi, um dort die entsprechenden ein und ausgaben zu steuern...

Für die Header reicht
if(!isset($_SESSION['UserID'])){echo 'Kein Zutritt!'; die;}

Flexibel für einzelne Seiten kannste das machen in dem du die "Sitemap" also ne Liste aller Seiten in einer DB speicherst, diese mit nem Flag versiehst, dann diese Tabelle Auslesen, wenn der Flag da is, dann die Sicherung verwenden, sonst nicht...

Bsp Tabelle:
CREATE TABLE Sites
(
ID INT AUTO_INCREMENT NOT NULL,
Filename VARCHAR (30) NOT NULL,
Flag BOOL NULL,
PRIMARY KEY(ID),
UNIQUE(Filename)
);

Abfrage im Header dann:
PHP:
$sql="SELECT
*
FROM
Sites
WHERE
Filename = '".$_GET['ac'].".php'
";
$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);
if($row['Flag'] == 1) {
if(!isset($_SESSION['UserID'])){echo 'Kein Zutritt!'; die;}
}

So müsste es theoretisch gehen...
 
Besser so und auch sicher genug ?
PHP:
if($_GET['ac'] != "")   // wird variable übergeben
{

    $_GET['ac'] = preg_replace("/[^a-zA-Z0-9_äöüÄÖÜ]/" , "" , $_GET['ac']); /// na dann filtern wir erstmal

echo $_GET['ac'];  // testausgabe gefolgt von db abfrage

    $sql="SELECT  
      *
    FROM
      Sites
    WHERE
      Filename = '".$_GET['ac'].".php'
    ";
    $result=mysql_query($sql);
    $row=mysql_fetch_assoc($result) or die('query fehlgeschlagen');
    if($row['Flag'] == 1)  // wenn Flag 1 ist fürfen ob session userid vorhanden ist dann seite ausgeben ansonsten da gefillter nur fehlertext ende
    {
        if(!isset($_SESSION['UserID']))
        {
            $filename = "includes/".$_GET['ac'].".php";
            if(file_exists($filename))
            {
                include($filename);
            }
            else
            {
            echo 'File nicht vorhanden!';
            include("fotter.php");
            die;
            }
        }
        else
        {
            echo 'Du bist nicht eigelogt!';
            include("fotter.php");
            die;
        }
    }
    elseif($row['Flag'] == 0) // selbiges für ausgeloggte
    {
        $filename = "includes/".$_GET['ac'].".php";
        if(file_exists($filename))
        {
            include($filename);
        }
        else
        {
            echo 'File nicht vorhanden!';
            include("fotter.php");
            die;
        }
    }
    else
    {
        echo 'die db macht schmarn und isch guck dumm';
        include("fotter.php");
        die;
    }

}
else  // standarausgabe bei besuch
{
    $filename = 'includes/home.php';
    if(file_exists($filename))
    {
        include($filename);
    }
}
include("fotter.php");

mfg Spikaner
 
Ja das sieht so schon gut aus...
Aber bei
PHP:
if(!isset($_SESSION['UserID']))
Haste du dich vermutlich geirrt...
So wird der INhalt angezeigt, wenn die UserID in der Session NICHT existiert ^^

Also das ! vorm isset weglassen ;)
 
Jetzt ein Problem daheim läuft das script ohne Probleme auf den Webspace (Strato) bekomme ich ein :Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in index.php on line 35
query fehlgeschlagen

PHP:
    $sql="SELECT  
      *
    FROM
      Sites
    WHERE
      Filename = '".$account.".php'
    ";
    $result=mysql_query($sql);
    $row=mysql_fetch_assoc($result) or die('query fehlgeschlagen');
$account ist vorhanden und heisst z.b. home

wo liegt jetzt hier der Fehler

mfg Spikaner
 
vermutlich existiert der Eintrag in der Tabelle nicht.

versuch mal nach $result = ....
PHP:
echo  mysql_error();
was er da ausspuckt.
 
Zurück