• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Loginsystem

Status
Für weitere Antworten geschlossen.

tnoehles

Neues Mitglied
Hallo ich habe hier ein Loginsystem, weil ich dat von oben nit hinbekomme mit einem Layout und so. Nur eine Frage was ist der Fehler in Zeile 36?

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 class=\"error\">\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']))) {
                echo "<p>\n";
                echo "Willkommen im Adminbereich\n";
                echo "</p>\n";
            } else {
                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";
            }
        }
    }
?>
das is die fehlermeldung: Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /usr/export/www/vhosts/funnetwork/hosting/tnoehles/tb/admin.php on line 36

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /usr/export/www/vhosts/funnetwork/hosting/tnoehles/tb/admin.php on line 36
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
 
ja in der index.php. soll ne verbindung aufgerufen werden gibt mir aber auch ne fehlermeldung... und ich weiß nit warum
 
ach sorry User und PW sind richtig. hier gibt der mir ne fehlermeldung in der index.php:

PHP:
     @mysql_connect(HOST, USER, PASS) OR die(mysql_error());
    mysql_select_db(DB) OR die(mysql_error());

und dann halt der fehler in der admin.php

PS.: Ich weiß schon dat bei HOST, USER, PASS und DB was anderes hin muss ;-)
 
Zuletzt bearbeitet:
ach sorry User und PW sind richtig. hier gibt der mir ne fehlermeldung in der index.php:

PHP:
     @mysql_connect(HOST, USER, PASS) OR die(mysql_error());
    mysql_select_db(DB) OR die(mysql_error());

und dann halt der fehler in der admin.php

PS.: Ich weiß schon dat bei HOST, USER, PASS und DB was anderes hin muss ;-)
Hast du error_reporting(E_ALL) drin?
So ein Fehler wird eig nur durch falsche Daten verursacht. Sicher dass sie stimmen? kontrollie sie lieber nochmal.
 
Ja hab ich drin. Und die DAten stimmen auch. So hier ma die index.php:
PHP:
<?php
    error_reporting(E_ALL);
        // Verbindung zu MySQL Aufbauen
    @mysql_connect(HOST, USER, PASS) OR die(mysql_error());
    mysql_select_db(DB) OR die(mysql_error());
    include "config.php"; // die Konfigurationsdateien lesen.
           // 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
        }
    }
    include "inhalt.php";
?>
und die admin.php:

PHP:
<?php
    // die admin.php
    error_reporting(0);
    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 class=\"error\">\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']))) {
                echo "<p>\n";
                echo "Willkommen im Adminbereich\n";
                echo "</p>\n";
            } else {
                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";
            }
        }
    }
?>
 
Wenn du die Verbindung in der index.php erzeugst, musst du in der admin.php auch include(index.php) machen oder etwas vergleichbares.
 
Wie schon von MaptheMop geschrieben hast du einen Includefehler. Du verbindest in deienr index.php mit der Datenbank. Progman hat die Verbindung aber in seinem Tutorial in der config.php. Also ändere include "config.php"; mal in include "index.php";
Gruß
 
eben!
und
dir bringt error_reporting(E_ALL) nichts, wenn du ein @ vor mysql_connect hast, denn das verhindert ja die Fehler ausgabe :!:
 
ich habe doch die verbindung in meiner config

PHP:
<?php
    include 'constant.php';
    include 'variablen.php';
    include 'functions.php';
?>
und das is dann die constant.php:

PHP:
<?php
    // constant.php
    define('MYSQL_HOST', 'localhost');
    define('MYSQL_USER', 'USER'); // kann ich ja schlecht für
                                    // eure MySQL wissen
    define('MYSQL_PASS', 'PASS'); // s.o.
    define('MYSQL_DATABASE', 'DB');  // s.o.
?>

und wenn ic die @ wegmache bekomm ich ja fast nur fehlermeldungen von wegen: Use of undefined constant localhost - assumed 'localhost'... datselbe mit PASS und USER....
 
Du hast die Konstanten in der config.php, nicht aber die Verbindung.
Du musst ja auch noch:
PHP:
@mysql_connect('MYSQL_HOST', 'MYSQL_USER', 'MYSQL_PASS') or die(mysql_error());
mysql_select_db('MYSQL_DATABASE') or die(mysql_error());
haben, damit eine Verbindung hergestellt wird. Schreib das in deine admin.php und es sollte klappen, wenn ich mich nicht verschrieben habe.
 
danke TheShadow es funktioniert - glaub ich ;-). aber ich bekomme auch schon die ganze zeit folgende fehlermeldungen: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /usr/export/www/vhosts/funnetwork/hosting/tnoehles/tb/index.php:115) in /usr/export/www/vhosts/funnetwork/hosting/tnoehles/tb/index.php on line 165

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /usr/export/www/vhosts/funnetwork/hosting/tnoehles/tb/index.php:115) in /usr/export/www/vhosts/funnetwork/hosting/tnoehles/tb/index.php on line 165

line 165 sieht so aus:

PHP:
session_start();
        if(!isset($_SESSION['IP'])) {
            $_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
 
session_start() muss ganz an den Anfang noch bevor irgend etwas anders auf der Seite ausgegeben wird. Alternativ dazu kannst du auch einfach nur ein @ davorsetzen.
 
Hm... das liegt wohl an deinem Header, da session_start(); immer ganz oben stehen muss. Schreib also das session_start(); sofort nach dem <?php.
 
ok danke ^^ jetzt hab ich aber noch en problem. wenn dat gelöst is nerv ich nit mehr ;-). also es wird jetzt alles richtig angezeigt man kann benutzernamen auswählen und PW eingeben. aber er wechselt nicht die seite sondern sagt Ungültiges Passwort. hier nochmal die admin.php:

PHP:
<?php
    // die admin.php
    error_reporting(E_ALL);
    @mysql_connect('HOSt', 'USER', 'PASS') or die(mysql_error());
mysql_select_db('DB') or die(mysql_error());
     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 Passwort.\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";
            }
        }
    }
?>

Ich habe auch alle daten bei phpmyadmin richtig eingegeben.
 
Ok, das ist jetzt aber echt ein Problem, wo man mit ein bissl Überlegen selbst dahinter kommen kann. Du musst doch nur zurückverfolgen, wann die Fehlermeldung ausgegeben wird, dann weißt du auch, welche Bedingung nicht gegeben ist und prüfst darauf hin, warum sie nicht gegeben ist.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben