Login skript

  • Themenstarter Themenstarter ba2
  • Beginndatum Beginndatum
B

ba2

Guest
MOIN MOIN,
ich habe folgendes Problem.

Ich möchte ein Login Skript machen mit PHP und SQL
Login funktioniert auch
jetzt will ich eine zweite funktion haben.
Jeder User hat eines Status 0 und 1, kann man als berechtigung ansehen,

User 0 kann sich die Links anzeigen lassen
User 1 kann sich die und die anzeigen lassen

http://www.nintendo4ever.de/1234.txt

das ganze funktioniert nur leider nicht


bitte um Hilfe

MFG

BA2
 
Hi.
Ändere in der Login.php die DB-Abfrage doch einfach in
Code:
$abfrage = "SELECT username, passwort, status FROM login WHERE username LIKE '$username' LIMIT 1";
Danach registrierst du, wenn das Passwort stimmt, die Status Variable ebenfalls in der Session.
Beispiel:
Code:
$_SESSION["status"] = $row->status;
Und in der Lager.php verwendest du dann
Code:
if($_SESSION["status"]=="1")
Ich hab das jetzt zwar nicht getestet, müsste doch aber ansich funktionieren.
 
Meine If abfrage funktioniert jetzt ich hab das jetzt so gemacht das alle daten neu aus der DB eingelesen werden,

jetzt habe ich aber folgendes Problem

jetzt erscheint für jeden angelegten benutzer der text der eigentlich nur für 1 benutzer erscheinen sollte

wie kann man die ausgabe auf den benutzer der sich eingeloggt hat limitieren?

Mein skript

<?php
$abfrage = "SELECT id, username, email, status FROM st_login";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo"<center>";
echo"<hr width = 100%><br>";
echo"Hallo $username <br>";
echo"</center>";

if(status==1)
{
echo "Sie haben Administrations-Rechte <br>";
echo "<hr width = 100%><br>";
}
else
{
echo "Du bist normaler Nutzer<br>";
echo "<hr width = 100%><br>";
}
}
?>

Ich hab mir das so vorgestellt das er nur die daten vom eingeloggten nutzer abfragt

$abfrage = "SELECT id, username, email, status FROM st_login";

Müsste die zeile bearbeitet werden denke ich mal weiss aber nicht wie
 
Original von ba2
jetzt erscheint für jeden angelegten benutzer der text der eigentlich nur für 1 benutzer erscheinen sollte
Na logisch. Deine Abfrage ist ja auch allgemein gehalten, so dass er alle existenten Werte für ID, username, email und Status aus st_login ausliest.
Wenn du da ein WHERE mit entsprechender Abfrage des Usernamens einbaust, wie du es in deinem 1. Beispiel getan hast, dann bekommst du auch nur die Werte für den einen User mit dem bestimmten Usernamen.
 
hab ich ja gemacht, da kommt immer folgende fehler meldung

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /www/htdocs/w005aa58/freak/lager.php on line 31

29 $abfrage = "SELECT username, passwort, email, status, FROM st_login WHERE username LIKE '$username' LIMIT 1";
30 $ergebnis = mysql_query($abfrage);
31 while($row = mysql_fetch_object($ergebnis))

Ich hab kein plan warum das so ist




Meine lager.php

<?php
session_start();
?>

<?php
if(!isset($_SESSION["username"]))
{
echo "Bitte erst <a href=\"index.htm\">einloggen";
exit;
}
?>

<html>

<head>
<meta http-equiv="Content-Language" content="de">
<link rel="stylesheet" href="design.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Lagersystem</title>
</head>

<?php
$verbindung = mysql_connect("localhost", "*********" , "***********")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db("d001d5cd") or die ("Datenbank konnte nicht ausgewählt werden");
?>

<?php
$abfrage = "SELECT username, passwort, email, status, FROM st_login WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo"<center>";
echo"<hr width = 100%><br>";
echo"Hallo $username <br>";
echo"</center>";

if($row->status==1)
{
echo "Sie haben Administrations-Rechte <br>";
echo "<hr width = 100%><br>";
}
else
{
echo "Du bist normaler Nutzer<br>";
echo "<hr width = 100%><br>";
}
}
?>
 
Hallo,

ich würde das ganze an deiner Stelle so machen:
PHP:
$ID = (int) $_POST['id']; // ID übergibst Du ja wahrscheinlich oder?
$sql = "SELECT * FROM `st_login` WHERE id='$ID' LIMIT 1;"; // Arbeite bei sowas nie mit LIKE
$query = mysql_query($sql);
while($users = mysql_fetch_array($query)) // Ich finde mysql_fetch_array besser
{
 // Deine Ausgaben
}
 
DANKE, mal ne frage ich würde das gerne mit den username machen

aber ich bekomme das absolut nicht hin.

Wie würdest du das machen?

mfg ba2
 
Genau so wie mit der ID also so:

....WHERE username='$username' LIMIT 1;";...

Natürlich würde ich das Passwort auch noch überprüfen und eine Session Id erzeugen welche in der Datenbank gespeichert wird.
Denn Username musst natürlich vorher auf ungültige zeichen testen damit kein SQL-Injection Angriff möglich ist.
 
zack fehlermeldung


Parse error: syntax error, unexpected T_STRING in /www/htdocs/w005aa58/freak/jo/lager.php on line 34


und das immer wieder

ich bin schon am verzweifeln
 
login.php
.-------------------------------------------------------------------------------------------------------.

<?php
session_start();
?>

<?php
$verbindung = mysql_connect("localhost", "d001d5cd" , "**************")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db("d001d5cd") or die ("Datenbank konnte nicht ausgewählt werden");

$username = $_POST["username"];
$passwort = md5($_POST["password"]);
$id = $_POST["userid"];

$abfrage = "SELECT id, username, passwort FROM st_login WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if($row->passwort == $passwort)
{
$_SESSION["username"] = $username;
echo "Login erfolgreich. <br> <a href=\"lager.php\">Geschützer Bereich</a>";
}
else
{
echo "Benutzername und/oder Passwort waren falsch. <a href=\"index.htm\">Login</a>";
}

?>


lager.php
.------------------------------------------------------------------------------------------------------.
<?php
session_start();
?>

<?php
if(!isset($_SESSION["username"]))
{
echo "Bitte erst <a href=\"index.htm\">einloggen";
exit;
}
?>

<?php
echo "$id";
?>
<html><head>
<meta http-equiv="Content-Language" content="de">
<link rel="stylesheet" href="design.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Lagersystem</title></head>

<?php
$verbindung = mysql_connect("localhost", "d001d5cd" , "**************")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db("d001d5cd") or die ("Datenbank konnte nicht ausgewählt werden");
?>

<?php

$abfrage = "SELECT id, username, email, status FROM st_login WHERE username='$username' LIMIT 1;";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo "<hr width = 100%><br>";
echo "<center>";
echo "Hallo $row->username Status: $row->status";
echo "</center>";
echo "<hr width = 100%><br>";


if($row->status==1)
{
echo "Hallo Admin";
}
else
{
echo "Hallo User";
}


}
?>


EDIT

:) :) :)Es geht jetzt

hab tatsächlich ein ";" vergessen
---------------------------------
$abfrage = "SELECT id, username, email, status FROM st_login WHERE username='$username' LIMIT 1;";

richtig
-------------------------------
$abfrage = "SELECT id, username, email, status FROM st_login WHERE username='$username' LIMIT 1";

so hatte ich
--------------------------------
 
Bei mir auch wie gesagt ich habe das ;
vergessen, bzw hätte nicht gedacht das da ein ; hin muss

vielen dank für die Hilfe
 
Zurück
Oben