zwischen links unterscheiden

  • Hallo,


    bastle mal an einer übersichtlicheren Variante meiner Website http://www.dietotenkoepfe.de und das wurde bisher daraus: versuch.dietotenkoepfe.de


    Ich würde gerne das ganze so managen: wenn auf ein Menüpunkt in der Navi gecklickt wurde, wird nur der Content von einer externen Datei geladen via

    PHP
    1. <?php include("benötigte Datei"); ?>

    und da wollte ich mal fragen wie ich das ganze mit PHP unterscheiden kann, dass das funtzt

  • Mal als Beispiel:




    Und der Ajax-Part(mit jQuery):


    Falls es Fragen gibt, bitte einfach nachfragen :)

  • Ich hab hier auch was interessantes:


    das ist die navi.php



    Noch nicht angepasst und zeilen einfach kopiert aber egal, hier mal dann die content.php



    und hier die index.php:


    PHP
    1. <body>
    2. <div id="wrapper">
    3. <?php include("navi.php"); ?>
    4. <section>
    5. <?php include("content.php"); ?>
    6. </section>
    7. <?php include("footer.php"); ?>
    8. </div>
    9. </body>


    Ist deine Methode sicherer?
    Oder einfacher oder wie?


    Hätte gern da mal n Ausblick darüber :D

  • Ich bin davon ausgegangen , dass du das ganze ohne Neuladen der Seite machen willst und nur den Hauptinhalt nachladen möchtest.
    Falls dir ein Neuladen der Seite egal ist deine Möglichkeit durchaus so richtig.


    Falls du aber wirklich über $page auf die GET-Variable zugreifst und nicht weiter oben dies Zuweisung außerhalb der geposteten Zeilen befindet hast du die Register-Globals auf deinem Webserver noch aktiviert und solltest dieses Sicherheitsrisiko dringend beheben....


    (Doku: http://php.net/manual/de/security.globals.php)


    Was das hier wird erschließt sich mir auch nicht ganz:


    PHP
    1. case "about": include("ueber.php"); break;
    2. case "mitgl": include("ueber.php"); break;
    3. case "about": include("ueber.php"); break;
    4. case "about": include("ueber.php"); break;
    5. case "about": include("ueber.php"); break;
    6. case "links": include("links.php"); break;


    Wozu denn 4mal about in deiner case? Einmal dürfte genügen :D

  • ja hab ich :D


    aus der scripts.php entnommen:


    <script type="text/javascript" src="prototype.js"></script>
    <script type="text/javascript" src="scriptaculous.js?load=effects,builder"></script>
    <script type="text/javascript" src="lightbox.js"></script>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="jquery.mmenu.min.all.js"></script>
    <script type="text/javascript" src="lightbox.js"></script>


    aber das mit dem nachladen will dann noch net ganz :?:


    wie mach ich das???



    EDIT:


    Das was ich nun in der index.php hab:




    Aus der navi.php


    Wie geht das?

  • Meine Ajax-Funktion ist hier so geschrieben das auf das href attribut zugreift und dessen Inhalt lädt.
    Da bei dir im href nur Sachen wie ?page=xyz stehen, die nicht existieren , kann die Funktion die Seiten nicht aufrufen.
    (Ein Blick in die Konsole dürfte dies bestätigen)


    Dort musst du die richtigen Links eintragen(relativ/absolut).
    Theoretisch müsste in deinem Main-Bereich aber eine Fehlermeldung kommen.
    TEste mal ob jQuery richtig eingebunden worden ist :)

  • jQuery geht :D


    Das menu funtzt mit jQuery und da das funtzt muss jQuery richtig eingebunden sein :D


    Aber beispielsweise wenn ich auf Home klicke dann funtzt das nicht....



    EDIT bzw UPDATE:


    habe jetzt das ganze doch über ?page= gemacht und habe jetzt ein Problem mit meinem Login, weil der nimmer will... :(


    vllt kann jemand mein script überprüfen und drüberschauen wenn was falsch ist korrigieren :D


    LOGINSCRIPT:


    Das ist in der login.php:
    [PHP]
    <?php header('Content-type: text/html; charset=utf-8'); ?>
    <?php


    // Session starten
    session_start();


    // Variablen deklarieren
    $_SESSION['angemeldet'] = false;
    $benutzername = '';
    $passwort = '';
    $fehlermeldung = '';


    // Funktion zum verbinden zur Datenbank
    function db_connect()
    {
    // Zugangsdaten für die DB
    $dbhost = '****';
    $dbuser = '****';
    $dbpass = '****';
    $dbname = '****';


    // Verbindung herstellen und Verbindungskennung zurückgeben
    $conid = mysql_connect( $dbhost, $dbuser, $dbpass ) or die( 'Verbindungsfehler!' );
    if (is_resource( $conid ))
    {
    mysql_select_db( $dbname, $conid ) or die( 'Datenbankfehler!' );
    }
    return $conid;
    }


    // Prüfen ob ein Cookie existiert und zu einem gültigen User gehört
    if (isset( $_COOKIE['UserLogin'] ))
    {
    // Wert aus dem Cookie mit dem Wert in der Datenbank vergleichen
    $conid = db_connect();
    $sql = "SELECT
    `id`
    FROM
    `autority`
    WHERE
    `cookie_hash` = '" .mysql_real_escape_string( $_COOKIE['UserLogin'] ). "' AND
    `aktiviert` = 1";


    $ergebnis = mysql_query( $sql, $conid );


    // Stimmt der Cookie Hash überein, wurde 1 Datensatz gefunden
    if (mysql_num_rows($ergebnis) == 1)
    {
    // Wenn der Hash aus dem Cookie mit dem aus der DB übereinstimmt,
    // Session Variable setzen und auf die geheime Seite weiterleiten
    $_SESSION['angemeldet'] = true;
    while($row = mysql_fetch_object($ergebnis))
    {
    $_SESSION["user"] = $row->benutzername;
    }
    header( 'location: ?page=versteck' );
    exit;
    }
    }


    // Wenn das Formular abgeschickt wurde
    if (isset( $_POST['login'] ))
    {
    // Maskierende Slashes aus POST Array entfernen
    if (get_magic_quotes_gpc())
    {
    $_POST = array_map( 'stripslashes', $_POST );
    }

    // Benutzereingabe umladen, von Leerzeichen befreien und
    $benutzername = strtolower( trim( $_POST['benutzer'] ) );
    $passwort = md5( trim( $_POST['passwort'] ) );

    // Benutzereingabe mit User in der Datenbank vergleichen
    $conid = db_connect();
    $sql = "SELECT
    *
    FROM
    `autority`
    WHERE
    LOWER(`benutzername`) = '" .mysql_real_escape_string( $benutzername ). "' AND
    `passwort` = '" .mysql_real_escape_string( $passwort ). "' AND
    `aktiviert` = 1";

    $ergebnis = mysql_query( $sql, $conid );

    // Stimmen die Benutzereingaben überein, wurde 1 Datensatz gefunden
    if (mysql_num_rows($ergebnis) == 1)
    {

    // Abfrageergebnis fetchen
    $usercookie = mysql_fetch_assoc( $ergebnis );


    // Wenn die Anmeldung korrekt war Session Variable setzen,
    // COOKIE an Browser schicken und auf die geheime Seite weiterleiten
    $_SESSION['angemeldet'] = $usercookie['id'];
    setcookie( 'UserLogin', $usercookie['cookie_hash'], time()+2 );
    header( 'location: ?page=versteck' );
    exit;
    }
    else
    {
    $fehlermeldung = '<br><h4 class="red">Die Anmeldung war fehlerhaft!</h4>';
    }
    }


    ?>
    [/PHP]


    Das ist in der recheranking.php:
    [PHP]
    <?php header('Content-type: text/html; charset=utf-8'); ?>
    <?php


    $server = "****";
    $benutzer = "****";
    $passwort = "****";
    $datenbank = "****";


    $dbconnection = mysql_connect($server, $benutzer, $passwort) or die ("Fehler mysql_connect: ".mysql_error());
    mysql_select_db($datenbank) or die ("Fehler bei select_db: ".mysql_error());

    $sql = mysql_query("SELECT * FROM autority WHERE id='$id'");

    $rechte = mysql_fetch_array($sql);

    $rank = $rechte['typ'];
    switch($rank) {
    case 1:
    $rankname = "Admin";
    break;
    case 2:
    $rankname = "Mitglied";
    break;
    case 3:
    $rankname = "Kassenwart";
    break;
    case 4:
    $rankname = "Mitglied";
    break;
    case 5:
    $rankname = "1. Vorstand";
    break;
    case 6:
    $rankname = "2. Vorstand";
    break;
    }
    ?>
    [/PHP]


    Das ist in der ansprache.php:
    [PHP]
    <?php


    $server = "****";
    $benutzer = "****";
    $passwort = "****";
    $datenbank = "****";


    $dbconnection = mysql_connect($server, $benutzer, $passwort) or die ("Fehler mysql_connect: ".mysql_error());
    mysql_select_db($datenbank) or die ("Fehler bei select_db: ".mysql_error());


    $sql = mysql_query("SELECT * FROM autority WHERE id='$id'");


    $ansprache = mysql_fetch_array($sql);


    $anspr = $ansprache['ansprache'];
    switch($anspr) {
    case 1:
    $anspracheform = "er";
    break;
    case 2:
    $anspracheform = "es";
    break;


    }


    ?>
    [/PHP]


    Das steht in der versteck.php:
    [PHP]
    <?php


    // Session starten
    session_start();


    // Prüfen ob der Benutzer angemeldet ist
    if (!$_SESSION['angemeldet'])
    {
    // Zum Login umleiten
    header( 'location: index.php' );
    exit;
    }



    $server = "****";
    $benutzer = "****";
    $passwort = "****";
    $datenbank = "****";


    $dbconnection =mysql_connect($server, $benutzer, $passwort) or die ("Fehler mysql_connect: ".mysql_error());
    mysql_select_db($datenbank) or die ("Fehler bei select_db: ".mysql_error());


    $id = $_SESSION['angemeldet'];


    include("rechteranking.php");


    $benutzerabfrage = mysql_query("SELECT * FROM autority WHERE id='$id'");
    $vorstandsabfrage = mysql_query("SELECT * FROM VP_ProtokollID WHERE id='$id'");


    include("ansprache.php");


    ?>


    <h3>Mitgliederbereich</h3>
    <hr class="color">
    <form id="loginform" method="post" action="logout.php">
    <table id="logintabelle">
    <tr>
    <?php
    $zeilea = mysql_fetch_array($benutzerabfrage);
    $benutzername = $zeilea['benutzername'];

    echo '<p>Wilkommen '. $benutzername .'</p>';
    echo '<p>Du bist nun angemeldet!</p>';
    ?>
    </tr>
    <tr>
    <td>
    <input type="submit" name="abmelden" value="Abmelden" id="logout" />
    </td>
    </tr>
    </table>
    </form>

    <? echo "test"; ?>
    [/PHP]


    Und das in der content.php:
    [PHP]
    <?
    if(isset($_GET["page"]))
    {
    switch($_GET["page"])
    {
    case "home": include("start.php"); break;
    case "about": include("ueber.php"); break;
    case "mitgl": include("mitgl.php"); break;
    case "team": include("team.php"); break;
    case "train": include("train.php"); break;
    case "kon": include("kon.php"); break;
    case "imp": include("imp.php"); break;
    case "schnitt": include("schnitt.php"); break;
    case "mitglsch": include("mitgliedschaft.php"); break;
    case "kost": include("kosten.php"); break;
    case "mitglwerden": include("mitglwerden.php"); break;
    case "gast": include("gast.php"); break;
    case "kegelreg": include("kegelreg.php"); break;
    case "galerie": include("galerie.php"); break;
    case "gaesteb": include("gaesteb.php"); break;
    case "links": include("links.php"); break;
    case "funde": include("funde.php"); break;
    case "intern": include("intern.php"); break;
    case "versteck": include("versteck.php"); break;
    case "daten": include("daten.php"); break;
    case "pswd": include("pswd.php"); break;
    default: include("start.php");
    }
    }
    else
    include("start.php");
    ?>
    [/PHP]



    Hat da jemand einen Plan?

  • Ehrlich gesagt hällt sich die Lust in grenzen das alles durch zu lesen.


    übrigens, bitte mach das so oder ähnlich.. du machst es dir leichter! ;)
    und entweder englische Seitennamen oder deutsche aber nicht mischen oder abkürzen!
    Wie du deine Dateien am ende nennst ist wurscht..


    ÜBRIGENS
    login.php

    PHP: 72
    1. $passwort = md5( trim( $_POST['passwort'] ) );

    Das kann man schon (fast) als fahrlässig bezeichnen..

  • Wenn du uns einen tipp gibst , was nicht geht, gerne^^


    Zitat

    ok naja ich glaube hoffe dass da niemand was böses will


    JA, ich bin doch so toll und lieb, wieso sollte mir wer was böses wollen? :rolleyes:
    Naivität und Faulheit sind wohl meistens immer noch der Grund bei schlechter Sicherheit.

  • ok ein tipp :D


    Gern doch :D


    Wenn ich mich mit einem richtigen Username und PSWD einlogge, geht er auf ne Seite weiter und es gibt keinen Content und der footer wird ebenfalls nicht geladen...


    Hier mal ein bild:


    ansicht.png


    EDIT:


    Habe es jetzt geschafft, dass das Login funtzt mithilfe von

    HTML
    1. <form id="loginform" method="post" action="login.php">


    Jedoch wenn ich mich mit dem falschen Nutzername oder PSWD einlogge, kommt keine Fehlermeldung mehr...


    Mein Login.php:



    Die Intern.php



    Die Versteck.php