MySQL Access denied

Hi,
ich habe auf meiner bplaced Seite angefangen einen Login bereich zu erstellen. Allerdings gibt es Probleme beim Verbinden.
Ich habe eine Tabelle eingerichtet und folgende login.php dazu geschrieben:

<? 
session_start(); 
include 'sessionhelpers.inc.php'; 
if (isset($_POST['login'])) 
{ 
    $userid=check_user($_POST['username'], $_POST['userpass']); 
    if ($userid!=false) 
        login($userid); 
    else 
        echo 'Ihre Anmeldedaten waren nicht korrekt!'; 
} 
if (!logged_in()) 
    echo '<form method="post" action="login.php"> 
        <label>Benutzername:</label><input name="username" type="text"><br> 
        <label>Passwort: </label><input name="userpass" type="password" id="userpass"><br> 
        <input name="login" type="submit" id="login" value="Einloggen"> 
    </form>'; 
else 
    echo '<a href="logout.php">Ausloggen</a>'; 
echo '<p /><a href="logged_in.php">Check</a>'; 
?>
<form method="post" action="login.php"> 
  <label>Benutzername:</label><input name="username" type="text"> 
  <br> 
  <label>Passwort: </label><input name="userpass" type="password" id="userpass"> 
  <br> 
  <input name="login" type="submit" id="login" value="Einloggen"> 
</form>

Die sessionhelpers.inc.php sieht wie folgt aus:

<? 
function connect() 
{ 
    $con= mysql_connect('localhost','gergaming_neu','meinpasswort') or die(mysql_error()); 
     mysql_select_db('member',$con) or die(mysql_error()); 
} 

function check_user($name, $pass) 
{ 
    $sql="SELECT UserId 
    FROM users 
    WHERE UserName='".$name."' AND UserPass=MD5('".$pass."') 
    LIMIT 1"; 
    $result= mysql_query($sql) or die(mysql_error()); 
    if ( mysql_num_rows($result)==1) 
    { 
        $user=mysql_fetch_assoc($result); 
        return $user['UserId']; 
    } 
    else 
        return false; 
} 

function login($userid) 
{ 
    $sql="UPDATE users 
    SET UserSession='".session_id()."' 
    WHERE UserId=".$userid; 
     mysql_query($sql); 
} 

function logged_in() 
{ 
    $sql="SELECT UserId 
    FROM users 
    WHERE UserSession='".session_id()."' 
    LIMIT 1"; 
    $result= mysql_query($sql); 
      return ( mysql_num_rows($result)==1); 
} 

function logout() 
{ 
    $sql="UPDATE users 
    SET UserSession=NULL 
    WHERE UserSession='".session_id()."'"; 
     mysql_query($sql); 
} 

connect(); 
?>

Außerdem gibt es noch eine Logged_in.php und eine Loogout.php, die hier aber unwichtig sind.
Wenn ich jetzt die Login.php über meinen Browser öffne, kommt folgende Meldung: Access denied for user ‘gergaming_neu’@‘localhost’ to database 'member’
Achso das “meinpasswort” habe ich natürlich erstetzt.

Weiß jemand woran das liegen könnte?

Bist du sicher, dass deine Datenbank “member” heißt? Nicht die Tabelle, es geht
hier um die Datenbank!

wählt nur eine Datenbank aus. Die Tabelle musst du später bei den Abfragen nennen.

Gruß,
TrekWork

Ups :smiley:
Das ist aber ein dummer fehler
Vielen danke für deine Hilfe. Es geht jetzt alles.

Ich hätte aber gerne noch einen kleinen Zusatz. Und zwar würde ich gern, wenn ein Benutzer eingeloggt ist, seinen Namen auf die Homepage schreiben. Also das sollte dann so ausehen:
Der Benutzer loggt sich ein und wird auf eine normale Seite weitergeleitet. Dort soll dann stehen: Hallo und sein Loginname.
Wie bekomm ich das hin?

mit Sessions. In der Session wird der Benutzername gespeichert.

<? session_start(); include 'sessionhelpers.inc.php'; if (isset($_POST['login'])) { $_SESSION['benutzername'] = $_POST['username']; $userid=check_user($_POST['username'], $_POST['userpass']); if ($userid!=false) login($userid); else echo 'Ihre Anmeldedaten waren nicht korrekt!'; } [... (hier gehts weiter mit dem Code)] ?>
Und wenn du dann den Usernamen ausgeben willst:

<?php echo "Hallo " . $_SESSION['benutzername']; ?>

Gut jetzt wird mir wenigstens die Seite richtig angezeigt, ohne fehler. Aber Da steht nur Hallo und kein name…
Hab das so gemacht:

<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
    $_SESSION['benutzername'] = $_POST['username'];
    $userid=check_user($_POST['username'], $_POST['userpass']);
    if ($userid!=false)
        login($userid);
    else
        echo 'Ihre Anmeldedaten waren nicht korrekt!';
} 
?>
<html>
<head>
</head>
<body>
blabla das was meine seite so sagt
hier soll der text hin ->
<?php
echo "Hallo " . $_SESSION['benutzername'];
?>
und der rest meiner seite
</body>
</html>

oder muss ich html dazu unterbrechen? Was schlecht wäre, soll nämlich in eine Tabelle rein…

Wenn da nix steht, wurde die Session anscheinend nicht mit Inhalt gefüllt,
also wurde die erste Abfrage nicht ausgeführt. Vergewissere dich, dass POST-Daten
übergeben wurden, denn nur dann wird die Session auch erstellt. Wenn du dich niemals
eingeloggt hast, wird auch niemals ein Name dort stehen.
Besser wäre dann natürlich:

<?php if (isset( $_SESSION['benutzername'])) { echo "Hallo " . $_SESSION['benutzername']; } else { echo "Hallo Gast"; } ?>

Gruß,
TrekWork

Hmm da wird mir Hallo Gast angezeigt. Ich bin aber eingeloggt.

Sicher? Log dich mal aus und wieder ein. Müsste eigentlich so klappen :wink:

Hab ich schon 3 mal versucht…

Ich hab mir jetzt eine Testdatei angelegt die so aussieht:

<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
    $_SESSION['benutzername'] = $_POST['UserName'] or die(mysql_error());
    $userid=check_user($_POST['UserName'], $_POST['UserPass']);
    if ($userid!=false)
        login($userid);
    else
        echo 'Ihre Anmeldedaten waren nicht korrekt!';
} 
?>
<?php
if (isset( $_SESSION['benutzername'])) {
echo "Hallo " . $_SESSION['benutzername'];
}
else { 
echo "Hallo Gast";
}
?>

Da kommt aber auch nur Hallo Gast.

Kann mir denn niemand sagen warum das nicht funktioniert?
Bin echt ratlos…

Also theoretisch müsste alles funktionieren, entweder machst du
oder “dein” Script was falsch. Poste am besten mal alles, was mit dem
Login zu tun hat, und erkläre, was du machst.

Es ist nicht mein script.
Ich habe ihn nur ein wenig abgeändert.
Und alles was zum login gehört habe ich im erster beitrag geschrieben.

setz mal auf allen Dateien ganz oben error_reporting(E_ALL);

nein, nur auf denen, die aufgerufen werden, oder in der global includeten :wink: (“common.php”, “include.php”, “global.php”)

Also ich hab jetzt error_reporting(E_ALL); in die testdatei, auf der Hallo Name erscheinen soll und in die “globale” datei eingefügt. Da passiert aber nichts. Es ist alles wie vorher. Keine Fehlermeldung und es steht, trotzdem ich eingeloggt bin, Hallo Gast.

Ich hab mal ein wenig rumgefummelt und bin auf das hier gekommen:

if(isset($_GET['UserName'])) { $_SESSION['Name'] = $_GET['UserName']; }elseif(!isset($_SESSION['Name'])) { $_SESSION['Name'] = "gast"; } echo $_SESSION['Name']."\n";
gibt aber auch nur gast aus…