Hilfe beim Loginsystem...

BillaBong

Erfahrenes Mitglied
Hallo,

ich bin PHP Anfänger und bin schon seit ein Paar Tagen dran mir ein Loginsystem in mein HP einzubauen. Das ist als Anfänger aber garnicht so einfach :-) . Also ich habe wie so viele mir mal das Tutorial auf http://tut.php-q.net/login.html durchgelesen. Zuerst hatte ich das Problem mit dem array_stripslashes fehler den ich dann durch etwas suchen in google so gelöst habe:

PHP:
    function array_stripslashes(&$var)
    {
        if(is_string($var)) {
            $var = stripslashes($var);
        } else {
            if(is_array($var)) {
                foreach($var AS $key => $value) {
                    array_stripslashes($var[$key]);
                }
            }
        }
    }

dann habe ich mir in die index.php zusätzlich noch ein Anmelde Formular reingebaut. die index.php sieht jetzt so aus.

PHP:
<?php
    error_reporting(E_ALL);
    include "config.php"; // die Konfigurationsdateien lesen.

    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
	
	    function array_stripslashes(&$var)
    {
        if(is_string($var)) {
            $var = stripslashes($var);
        } else {
            if(is_array($var)) {
                foreach($var AS $key => $value) {
                    array_stripslashes($var[$key]);
                }
            }
        }
    }

    // Session starten wenn ?section=admin geöffnet wurde
    if(isset($_GET['section']) AND ("admin" == $_GET['section'])) {
        session_start();
        if(!isset($_SESSION['IP'])) {
            $_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
        }
        if($_SESSION['IP'] != $_SERVER['REMOTE_ADDR']) {
            echo "<p class=\"error\">\n";
            echo "    Sie dürfen nicht die Session von einem\n";
            echo "    anderen user Benutzten. Bitte benutzen sie\n";
            echo "    folgenden Link um zur Homepage zu gelangen.\n";
            echo "    <a href=\"\">Zurück zur Homepage</a>\n";
            echo "</p>\n";
            die(); // Aus Sicherheitsgründen die Abarbeitung sofort beenden
        }
    }

   if(get_magic_quotes_gpc()) {
        array_stripslashes($_GET);
        array_stripslashes($_POST);
        array_stripslashes($_COOKIE);
    }
	


   echo '<br><br>
		<table border="0">
		<tr>
			<td width="250px">
		<form method="post" action="admin.php">
        <label><font color="#BDBDBD" size="2,5px">Benutzername:</font></label><div align="right"><input name="UserID" type="text"></div>
        <label><font color="#BDBDBD" size="2,5px" align="left">Passwort:</font></label><div align="right"><input name="Password" type="password" id="Password"></div>
        <br><div align="center"><input name="admin" type="submit" id="login" value="Einloggen"></div>
		</form>
			</td>
		</tr>
		</table>
    ';
?>

...so... alles soweit so gut. Doch wenn ich ich jetzt einlogen will kommt die Fehlermeldung:

Fatal error: Call to undefined function login_right() in C:\apachefriends\xampp\htdocs\test\admin.php on line 16

An dieser stelle Poste ich mal die admin.php:

PHP:
<?php
    // die admin.php
    if(isset($_GET['action']) AND ("logout" == $_GET['action'])) {
        session_destroy();
        echo "<p>\n";
        echo "    Sie haben sich ausgeloggt. Um wieder in den Adminbereich\n";
        echo "    zu kommen müssen sie sich wieder Einloggen\n";
        echo "</p>\n";
    } else {
        if(isset($_POST['UserID']) AND '0' == $_POST['UserID']) {
            echo "<p>\n";
            echo "    Bitte wählen sie einen Benutzernamen aus.\n";
            echo "</p>\n";
        } else {
            if(isset($_POST['UserID'], $_POST['Password']) AND
               login_right(addslashes($_POST['UserID']),
                           addslashes($_POST['Password']))) {
                $_SESSION['ID'] = $_POST['UserID'];
            }

            if(isset($_SESSION['ID'])) {
                echo "<p>\n";
                echo "Willkommen im Adminbereich <br />\n";
                // Die Session-ID nicht vergessen
                echo "    <a href=\"index.php?section=admin&amp;".SID."\">Repeat</a>\n";
                echo "    <a href=\"index.php?section=admin&amp;action=logout&amp;".SID."\">Ausloggen</a>\n";
                echo "</p>\n";
            } else {
                if(isset($_POST['submit'])) {
                     // Der Submit-Button wurde gedrückt
                     // aber der Login ist falsch. Deshalb
                     // erstellen wir eine Fehlermeldung
                     echo "<p>\n";
                     echo "    Ungültiges Password.\n";
                     echo "</p>\n";
                }
                echo "<form action=\"index.php?section=admin\" method=\"post\" class=\"formular\">\n";
                echo "    <p>\n";
                echo "        Adminbereich\n";
                echo "    </p>\n";
                echo "    <ol>\n";
                echo "        <li>\n";
                echo "            <label for=\"name\">Name</label>\n";
                $sql = "SELECT
                            ID,
                            Name
                        FROM
                            users
                        ORDER BY
                            Name ASC;";
                $result = mysql_query($sql) OR die(mysql_error());
                echo "                <select size=\"1\" name=\"UserID\" id=\"name\">\n";
                echo "                    <option value=\"0\" selected=\"selected\">Bitte wählen</option>\n";
                while($row = mysql_fetch_assoc($result)) {
                    echo "<option value=\"".$row['ID']."\">".$row['Name']."</option>\n";
                }
                echo "                </select>\n";
                echo "        </li>\n";
                echo "        <li>\n";
                echo "            <label for=\"password\">Password</label>\n";
                echo "            <input type=\"password\" name=\"Password\" id=\"password\" />\n";
                echo "        </li>\n";
                echo "        <li>\n";
                echo "            <input type=\"submit\" name=\"submit\" value=\"Speichern\" />\n";
                echo "            <input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
                echo "        </li>\n";
                echo "    </ol>\n";
                echo "</form>\n";
            }
        }
    }
?>

und es gibt auch noch eine Functions.php:

PHP:
<?php
    function login_right($id, $pass)
    {
        $sql = "SELECT
                    COUNT(*) as Anzahl
                FROM
                    users
                WHERE
                    ID = '".$id."' AND
                    Password = MD5('".$pass."');";
        $result = mysql_query($sql) OR die(mysql_error());
        $row = mysql_fetch_assoc($result);
        mysql_free_result($result);
        return $row['Anzahl'];
    }
?>

und noch die config.php

PHP:
<?php
    // config.php
    error_reporting(E_ALL);
	
	
    define('MYSQL_HOST',     'localhost');
    define('MYSQL_USER',     'xxx');
    define('MYSQL_PASS',     'xxx');
    define('MYSQL_DATABASE', 'login');
?>

Das Problem ist halt das ich das Tutorial absolut nicht richtig als anfänger verstehe. Und auf das Zitat von dem Webmaster :

Achtung: Ich kriege oft Feedback via Email und IRC das PHP die Funktion array_stripslashes nicht findet. Diese Funktion ist keine interne Funktion von PHP. Doch leider öffnen viele User dieses Kapitel direkt, ohne die Kapitel davor zu lesen. Selbst der Hinweis auf jeder Seite das diese Tutorial von anfang an gelesen wird, wird ignoriert. Wenn sie also die Fehlermeldung Undefined function: array_stripslashes oder ähnlich bekommen, haben sie das Tutorial nicht von Anfang an gelesen. Es ist sehr wichtig, dass sie das Tutorial von Anfang an lesen. Siehe dazu den Infotext auf der Index-Seite und die Kopfzeile über jeden Kapitel.

.... habe ich auch die anderen Tutorials durchgemacht was ziemlich Zeitaufwändig war und mir nicht viel mehr gebracht hat. Dann kann ich mir auch garnicht vorstellen wenn der login mal funktionieren soll, wie ich dann die Gesicherte Seiten (Der "LOGIN" Bereich) einbinden kann. Wenn mir da jemand helfen könnte wär ich um einige sorgen leichter ;) . Ich danke schon mal im Voraus.
 
Du musst noch die „login_right()“-Funktionsdefinition in das Skript einbinden, damit der PHP-Interpreter die Funktion findet.
 
erst mal danke für die schnelle Antwort.

...ja aber wurde das nicht schon hier

admin.php:

PHP:
 else {
            if(isset($_POST['UserID'], $_POST['Password']) AND
               login_right(addslashes($_POST['UserID']),
                           addslashes($_POST['Password']))) {
                $_SESSION['ID'] = $_POST['UserID'];
            }

festgelegt?
 
ich weiss nicht genau was du meinst mit dem das ich das in das Script einbinden musst, in welches Script meinst du ?
 
Du rufst die Funktion zwar an genannter Stelle auf, sie ist dem Interpreter jedoch nicht bekannt wie etwa die array_stripslashes()-Funktion, da im Skript selbst nicht definiert wird.
 
...hmmmm sowas geht da aber auch nicht...

PHP:
	function login_right($_POST)
	
	if(isset($_POST['UserID']) AND
       isset($_POST['Password']) AND
       login_right($_POST['UserID'], $_POST['Password'])) {
        echo "Willkommen";
    } else {
        echo "Login ungültig";
		}

kannst du mir mal wenigstens ein bisschen auf die sprünge helfen? Ich will ja nicht da stehen als sollen andere für mich die Arbeit machen... die Arbeit liegt hier jedoch auch nicht im vordergrund. Viel mehr das ich das verstehen will wie das geht. Und dazu bäuchte ich jemand der mir das mal erklärt.
 
In dem PHP Handbuch stehen mit sicherheit auch noch weit aus mehr .... aber warum brauchen wir dann ein PHP Forum für PHP fragen? Kannst du mir vieleicht noch sagen wir der Admin bereicht später sichtbar wird?
 

Neue Beiträge

Zurück