homepage +passwort
Shikuza 26.02.2004 - 13:47 3418 45
dio
Here to stay
|
zwar lieb gemeint, aber der hilft mir nicht weiter... 
der zugangsschutz geht ja schon. hab ich jetzt mittels php + mysql und sessions gemacht.
mir gings nur darum ganz einfach die userdaten aus meiner sql-db auf der homepage anzuzeigen für spielerein wie:
Herzlich willkommen herr XYZ... versteh mich ned falsch aber langsam kommts mir so vor als würden wir deine homepage hier mehr oder weniger coden  schau dir einfach a paar php tutorials an, das is wirklich kein problem  du brauchst nur die abfrage von mir weiter verwenden.
|
guvi
OC Addicted
|
versteh mich bitte auch nicht falsch, aber bisher war nichts wirklich brauchbares dabei hier. net falls verstehen, ich will nicht als undankbar da stehen. aber nach deiner lösung bin ich doch auf sql wieder umgesprungen und hab das auch ziemlich alleine bis jetzt gelöst. und das nach grad mal 2 tagen php (wobei ich von programmieren allgemein nüsse verstehe  ) edit: damit ich hier auch noch was beitragen kann und so vielleicht leidensgenossen helfe: effektiv hab ich es so gemacht jetzt!: <?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
header('Location: ../index_error.php');
}
if (!logged_in())
header('Location: ../index_error.php');
else
header('Location: index_firma.php');
?>
und in der sessions steht: <?
function connect()
{
$con= mysql_connect('localhost','dbxxxxx','xxxxx') or die(mysql_error());
mysql_select_db('xxxxx',$con) or die(mysql_error());
}
function check_user($name, $pass)
{
$sql="SELECT UserId
FROM users
WHERE UserName='".$name."' AND UserPass='".$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();
?>
Bearbeitet von guvi am 27.05.2004, 17:05
|
fleshmark
GameDev
|
@guvi: auch nix für ungut, aber wo _genau_ liegt das problem  musst ja einfach nur bei aufruf der "index_firma.php" mithilfe des eingeloggten users (der ja hoffentlich in der session steht) per SELECT seine weiteren attribute abfragen. einfach nur ein neues SELECT schreiben in der index_firma.php  edit: gratulation für den schnellen einstieg in php
|
guvi
OC Addicted
|
@fleshmark Danke  Das mim SELECT FROM hab ich auch brav gemacht... aber es geht trotzdem net. Entweder er gibt mir gar nix aus oder die "Preffered ID '" (wo auch immer die daherkommt)
|
fleshmark
GameDev
|
jo dann zeig uns mal wie die db-structur,code ausschaut. preferred id sagt mir persönlich jetzt nix, bin aber auch bei weitem kein php,mysql guru
|
dio
Here to stay
|
kopier mal die sql abfrage herein
|
guvi
OC Addicted
|
ich hab ne table User, in der neben UserName, UserPass und SessioID auch so sachen wie "Nachname, Vorname, tel, plz... usw." drinstehen. nun hab ich eine anfrage.php die auf der einen seite mit meinem login-sysem geschützt ist. das funktioniert auch! nun hab ich gleich nach session_start meine abfrage eingebunden! in der sessionhelpers sthen die db-verbindungen drin, und ein paar funktionen für mein login-system <?
session_start();
include 'sessionhelpers.inc.php';
?>
<?
$abfrage1 = "SELECT * FROM user";
$ergebnis1 = mysql_query($abfrage);
?>
somit sollte ich eigenltich auf die varibalen meiner DB rankommen (wenn ich das auf schattenbaum.net/php richtig verstehe) und nun noch beim formularfeld z.b: value="<? echo $nachname ?>
aber anscheinend hab ich es mir zu leicht vorgestellt, da es net geht
|
fleshmark
GameDev
|
$abfrage1 = "SELECT * FROM user";
$ergebnis1 = mysql_query($abfrage);
soll doch eher "$abfrage1" heissen oder?  edit: mit if(mysql_num_rows($ergebnis1))
kannst abfragen ob überhaupt was im query drin is siehe auch http://tut.php-q.net/mysql-select-php.html
Bearbeitet von fleshmark am 28.05.2004, 11:49
|
guvi
OC Addicted
|
ok, ich glaub ich gebs bald auf  hab den 1er auch dazugemacht, aber so ganz haut das nicht hin... nun hab ich wieder was anderes probiert... in der sessionhelpers hab ich folgende funktion eingebunden: function benutzerdaten()
{
$daten="SELECT *
FROM user
WHERE UserSession='".session_id()."'";
$bndaten= mysql_query($daten);
}
somit sollten meine kompletten benutzerdaten in $bndaten drinstehen... und nun hab ich nur mal zum testen versucht, das auch auszugeben (irgendwo auf der html-seite.... nicht im formular) <? echo $bndaten ?>
nur erscheinen tut wieder gar nichts!  eins versteh ich aber in der theorie auch noch nicht so ganz.... jetzt sollten ja in $bndaten meine kompletten infos drin sein. wenn ich aber nur einen bestimmten wert aus ner spalte brauche, kann ich dann auch $(Spaltenname) verwenden, oder muss ich wieder ne eigene abfrage dafür machen? Danke für Eure Mühe!!
|
fleshmark
GameDev
|
if(mysql_num_rows($result))
{ // gucken ob was im Query drinsteckt
while($row = mysql_fetch_assoc($result))
{
echo $row['Datum']." > ".$row['Titel']."<br />\n";
}
}
else
{
echo "Es sind keine News in der Datenbank vorhanden<br />\n";
}
ich hab das jetzt einfach von der oberen seite rauskopiert. ersetz einfach mal "$result" mit "$bndaten" und die attributnamen mit deinen der mysql-db. und dann schau was er sagt, wenn er sagt "es sind keine news in ..." dann weisst, dass in $bndaten keine datensätze drinnenstehn, dh, es muss beim select schon scheitern, evl, probier mal statt dem "*" die einzelnen spalten anzugeben, oder nur mal eine zum probieren. edit: echo $bndaten
kann auch net funktionieren, wennst mehrere daten drinnenhast, dann musst die "fetchen" - so wie oben in dem code, den ich dir rauskopiert hab (vielleicht gibts auch eine andere lösung, ich kenn aber nur diese)
Bearbeitet von fleshmark am 28.05.2004, 14:20
|
guvi
OC Addicted
|
Liebe Leute! Ich brauch mal wieder Hilfe zu dem Thema! Das LogIN hat auf meinem privaten WebSpace tadellos funktioniert. Nun wurde die Seite auf einen Telekom-WebSpace, wo wir nun auch die DB liegen haben, geswitched. Habe am Telekom-DB-Server genau die selbe Tabelle angelegt usw. in meiner function connect() hab ich die richtigen Verbindungen reingeschrieben, aber das LogIN geht nicht  Das Connect auf die DB dürfte grundsätzlich funktionieren, weil wenn ich die Daten ändere kommt eine Fehlermeldung. Ansonsten komm ich immer auf meine Seite: "Ihr Login war nicht richtig...." Ich weiß aber nicht wieso, es wurde nichts verändert.... Jemand vielleicht ne Idee?
|
mat
AdministratorLegends never die
|
DU MUSST DEBUGGEN!
|
guvi
OC Addicted
|
DU MUSST DEBUGGEN! aha... was heißt das? und wieso muss ich das machen?
|
dio
Here to stay
|
aha...
was heißt das? und wieso muss ich das machen? damit du eingrenzen kannst, wo der fehler passiert.
|
guvi
OC Addicted
|
mich wunderts nur, dass auf dem einen webspace tadellos geht und am anderen nicht...
was ich ziemlich sicher ausschließen kann: die verbindung mit dem sql-server und dass die richtige datenbank angesprochen wird.
die tabellenstruktur sollte genauso sein wie in der 1. DB
Wie funktioniert das debuggen? Gibts da kleine Helferlein?
|