Login register Fehler!

Hallo, ich habe mir vor kurzem ein login register script aus dem internet gezogen,
habe es installiert und alles schien zu klappen , aber als ich mich registrierte ,
gabe “login.php” einen fehler:

-----------Anfang----------

Warning: mysql_query() expects parameter 2 to be resource, null given in /users/jakk/www/server/test/login.php on line 20

-----------Ende------------

Hier mein login.php :

[code]<?

/**

  • Checks whether or not the given username is in the

  • database, if so it checks if the given password is

  • the same password in the database for that user.

  • If the user doesn’t exist or if the passwords don’t

  • match up, it returns an error code (1 or 2).

  • On success it returns 0.
    /
    function confirmUser($username, $password){
    global $conn;
    /
    Add slashes if necessary (for query) */
    if(!get_magic_quotes_gpc()) {
    $username = addslashes($username);
    }

    /* Verify that user is in database */
    $q = “select password from users where username = ‘$username’”;
    $result = mysql_query($q,$conn); <--------- LINE 20
    20 if(!$result || (mysql_numrows($result) < 1)){
    return 1; //Indicates username failure
    }

    /* Retrieve password from result, strip slashes */
    $dbarray = mysql_fetch_array($result);
    $dbarray[‘password’] = stripslashes($dbarray[‘password’]);
    $password = stripslashes($password);

    /* Validate that password is correct */
    if($password == $dbarray[‘password’]){
    return 0; //Success! Username and password confirmed
    }
    else{
    return 2; //Indicates password failure
    }
    }

/**

  • checkLogin - Checks if the user has already previously

  • logged in, and a session with the user has already been

  • established. Also checks to see if user has been remembered.

  • If so, the database is queried to make sure of the user’s

  • authenticity. Returns true if the user has logged in.
    /
    function checkLogin(){
    /
    Check if user has been remembered */
    if(isset($_COOKIE[‘cookname’]) && isset($_COOKIE[‘cookpass’])){
    $_SESSION[‘username’] = $_COOKIE[‘cookname’];
    $_SESSION[‘password’] = $_COOKIE[‘cookpass’];
    }

    /* Username and password have been set /
    if(isset($_SESSION[‘username’]) && isset($_SESSION[‘password’])){
    /
    Confirm that username and password are valid /
    if(confirmUser($_SESSION[‘username’], $_SESSION[‘password’]) != 0){
    /
    Variables are incorrect, user not logged in /
    unset($_SESSION[‘username’]);
    unset($_SESSION[‘password’]);
    return false;
    }
    return true;
    }
    /
    User not logged in */
    else{
    return false;
    }
    }

/**

  • Determines whether or not to display the login
  • form or to show the user that he is logged in
  • based on if the session variables are set.
    */
    function displayLogin(){
    global $logged_in;
    if($logged_in){
    echo “

    Logged In!

    ”;
    echo “Welcome $_SESSION[username], you are logged in. <a href=“logout.php”>Logout”;
    }
    else{
    ?>

Login

Username:
Password:
Remember me next time
 
<? } } /** * Checks to see if the user has submitted his * username and password through the login form, * if so, checks authenticity in database and * creates session. */ if(isset($_POST['sublogin'])){ /* Check that all fields were typed in */ if(!$_POST['user'] || !$_POST['pass']){ die('You didn\'t fill in a required field.'); } /* Spruce up username, check length */ $_POST['user'] = trim($_POST['user']); if(strlen($_POST['user']) > 30){ die("Sorry, the username is longer than 30 characters, please shorten it."); } /* Checks that username is in database and password is correct */ $md5pass = md5($_POST['pass']); $result = confirmUser($_POST['user'], $md5pass); /* Check error codes */ if($result == 1){ die('That username doesn\'t exist in our database.'); } else if($result == 2){ die('Incorrect password, please try again.'); } /* Username and password correct, register session variables */ $_POST['user'] = stripslashes($_POST['user']); $_SESSION['username'] = $_POST['user']; $_SESSION['password'] = $md5pass; /** * This is the cool part: the user has requested that we remember that * he's logged in, so we set two cookies. One to hold his username, * and one to hold his md5 encrypted password. We set them both to * expire in 100 days. Now, next time he comes to our site, we will * log him in automatically. */ if(isset($_POST['remember'])){ setcookie("cookname", $_SESSION['username'], time()+60*60*24*100, "/"); setcookie("cookpass", $_SESSION['password'], time()+60*60*24*100, "/"); } /* Quick self-redirect to avoid resending data on refresh */ echo ""; return; } /* Sets the value of the logged_in variable, which can be used in your code */ $logged_in = checkLogin(); ?>[/code]

Ps: ich habe schon eine tabelle angelegt mit username und password :slight_smile:

Danke schon mal im voraus! habe hoffnung schon fast aufgegeben ! :astonished:

In dem Ausschnitt wird keine Verbindung zur Datenbank aufgebaut. Wo und wie ist denn $conn definiert?

Mfg :wink2:

Ja,
$conn ist in database.php festgelegt:


<?

/**
 * Connect to the mysql database.
 */
$conn = mysql_connect("localhost", "name", "passwort") or die(mysql_error());
mysql_select_db('jakk', $conn) or die(mysql_error());

?>

“name” und “passwort” habe ich schon festgelegt, möchte es nur nicht wegen sicherheits kram zeigen.

Hi,
global $conn;
wenn ich mich nicht irre, benötigt diese Funktion aktiviertes register_globals
Ist dies Aktiviert? Und schonmal überprüft ob $conn vill leer ist?

MFG Harry

[quote=“harry01”]global $conn;
wenn ich mich nicht irre, benötigt diese Funktion aktiviertes register_globals[/quote]
Nein, da besteht nicht der geringste Zusammenhang.

Nein iwi hat das was mit mysql zu tun aber ich bin neu in dem gebiet :frowning:

Nun, die Fehlermeldung sagt:

„null given“ an Parameter 2. Was wohl $conn betrifft.

Ein Blick ins PHP manual sagt uns der Rückgabewert von mysql_connect ist:

Da die Fehlermeldung allerdings sagt dass $conn „null“ ist und nicht „boolean“ (FALSE wäre ein boolean), kann es nur heißen, dass $conn zu dem Zeitpunkt nicht gesetzt ist/nicht bekannt ist. Also das $conn alles mögliche ist, nur nicht der Rückgabewert von mysql_connect().

Wann auch immer die database.php oder login.php eingebunden wird. Du musst sichergehen, dass die database.php vorher eingebunden wird.

Edit:
Ach übrigens[quote=“Jakk”]<? /* ganz viel code */ ?>[/quote]
Ich soll dich von diversen Leuten dafür schlagen, dass du short tags verwendest.
Bitte nutze: <?php /* ganz viel code */ ?>

mfg Balmung

PS. SCNR

So, habe database.php eingefügt, aber jetzt zeigt er mir garnix an!
Noch nichtmal ein error!

<? include('database.php');

Wie gesagt, ich habe keine ahnung auf dem gebiet möchte es aber gerne lernen also BITTE seid nicht so unfreundlicg, nur weil ich ein nooob bin!

Hier ist niemand unfreundlich :slight_smile:

Du könntest allerdings damit anfangen, die Ratschläge umzusetzen. Stichwort Short Tags.

Mfg :wink2: