Bin ich zu blöd oder was

Kalma

Erfahrenes Mitglied
Hey liebe Tutorials-gemeinde,

ich habe mir aus langeweile ein "PN-System" gecodet... ;)

Nur leider habe ich ein Problem:

Ich habe folgende Seiten:

-1- index.php (zum einloggen)
-2- login.php (das einlogg-script)
-3- pn.php (Hier werden die PN's angezeit)

So..
Nun mein Problem:
Ich will nun, das die User sich auf der Index.php einloggen können... Das auch gut und schön..

NUR:
Nun soll in dem Script folgendes passieren:
wenn der username richtig ist, soll folgender text ausgegeben werden:
Hallo "Username"... Du bist eingeloggt
Weiter zu den PN's
dieser Text: "weiter zu den pn's" sollte so verlinkt sein:
<a href=\"pn.php?userid=".$row['id']."\"></a>
Halt so, das der die Userid ausgibt und zu folgender URL geht:
http://www.dfmusik.de/test/pn.php?userid=1
oder
http://www.dfmusik.de/test/pn.php?userid=2
und so weiter.

Nur liest der leider die UserId nicht aus...

Ich habe mir mal meine Scripts:

Index.php:
PHP:
<hr />

<b>Login</b>
<br />
<form action="login.php" method="post">
Username <br />
<input type="text" name="username" />
<p>
Kennwort <br />
<input type="password" name="passwort" />
<p>
<input type="submit" value="login" />
</form>

<hr />


und

login.php:
PHP:
<?php
session_start();

include "connect.php";

$username = $_POST['username'];
$passwort = $_POST['passwort'];

$Query = "SELECT * FROM user WHERE username LIKE '$username' LIMIT 1";
$Result = mysql_query($Query);

$row  = mysql_fetch_object($Result);


if($row->passwort == $passwort)
    {
    $_SESSION["username"] = $username;
    echo " Hallo $username... Du bist eingeloggt ";
	echo " <br /> ";
        $rowid = mysql_fetch_array($Result);
	echo " <a href=\"pn.php?userid=".$rowid['id']."\"> Weiter zu den Pn's </a> ";
    } else {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"index.php\">Login</a>";
    } 
?>


<hr />

Könnt ihr mir da helfen


BIIIIIIIIIIIIIIIIIIIIIITTE

David
 
Spar Dir doch die Uebergabe der UserID einfach und nutz die Daten aus der Session um an die UserID zu kommen. Oder speicher anstelle der Usernamens einfach die UserID, und wenn Du mal den Usernamen brauchst holst Du eben diesen aus der Datenbank.

Und waehle in Zukunft bitte Threadtitel die etwas aussagekraeftiger sind und vor allem nicht so zu boesen Antworten auffordern.
 
Hallo Dennis,

ja.. Beim Nächsten Mal wechsel ich den Titel...


Nun aber wieder zu PHP ;)

wie meintest du das genau

ich habe es nun so versucht:
PHP:
if($row->passwort == $passwort)
    {
    $_SESSION["id"] = $id;
    echo " Hallo $username... Du bist eingeloggt ";
	echo " <br /> ";
	echo " <a href=\"pn.php?userid=$id\"> Weiter zu den Pn's </a> ";
    } else {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"index.php\">Login</a>";
    }

Aber so das auch net wirklich :(

Für weiter Vorschläge bin ich gerne offen ;)

David

// edit

Hallo...

ich habe es jetzt doch hinbekommen...

Nämlich so:

PHP:
<?php
session_start();

include "connect.php";

$username = $_POST['username'];
$passwort = $_POST['passwort'];

$Query = "SELECT * FROM user WHERE username LIKE '$username' LIMIT 1";
$Result = mysql_query($Query);
$Result2 = mysql_query($Query);

$row  = mysql_fetch_object($Result);


if($row->passwort == $passwort)
    {
    $_SESSION["username"] = $username;
    echo " Hallo $username... Du bist eingeloggt ";
	echo " <br /> ";
	$rowid = mysql_fetch_array($Result2);
	echo " <a href=\"pn.php?userid=".$rowid['id']."\"> Weiter zu den Pn's </a> ";
    } else {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"index.php\">Login</a>";
    } 
?>


<hr />
 
Thema Sicherheit:

md5() = Verschlüsselung des Passworts bereits in der Datenbank.
mysql_real_escape_string = für die sichere Benutzung in mysql_query maskieren.

END;


Habe folgenden Vorschlag:
PHP:
<?php

<?php
session_start();

include "connect.php";

$Query = "SELECT
                   *
          FROM
                   `user`
          WHERE
                   `username` = '".mysql_real_escape_string($_POST['username'])."'
          AND
                   `passwort` = '".mysql_real_escape_string(md5($_POST['passwort'])."'";


$result = mysql_query($Query)OR DIE("keine Verbindung möglich: " .mysql_error());
     
     while( $row = mysql_fetch_objekt($result) ){    
           $username = $row->username;
           $passwort = $row->passwort;
           $id = $row->ID;
     }

if( $row->username == $username && $row->passwort == $passwort ){
    
    $_SESSION["username"] = $username;
    echo " Hallo $username... Du bist eingeloggt ";
    echo " <br /> ";
        
    echo " <a href=\"pn.php?userid=".$id."\"> Weiter zu den Pn's </a> ";
    } else {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"index.php\">Login</a>";
}
?>
 
Zuletzt bearbeitet:
Dennis meinte mit seinem Vorschlag wohl, dass die Benutzer-ID per Sitzung übergeben wird und nicht per URL-Argument. In dem „pn.php“-Skript greifst du also auf den Wert der Sitzungsvariable statt auf den der $_GET-Variable zurück.
 
Zurück