"We are back" « oc.at

homepage +passwort

Shikuza 26.02.2004 - 13:47 3418 45
Posts

dio

Here to stay
Registered: Nov 2002
Location: Graz
Posts: 5013
Zitat von guvi
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
Avatar
Registered: Aug 2001
Location: Bgld.
Posts: 685
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 :D )

edit: damit ich hier auch noch was beitragen kann und so vielleicht leidensgenossen helfe:

effektiv hab ich es so gemacht jetzt!:

Code: PHP
<?
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:

Code: PHP
<? 
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
Avatar
Registered: Aug 2000
Location: Wien
Posts: 2958
@guvi:

auch nix für ungut, aber wo _genau_ liegt das problem :confused:
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
Avatar
Registered: Aug 2001
Location: Bgld.
Posts: 685
@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
Avatar
Registered: Aug 2000
Location: Wien
Posts: 2958
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
Registered: Nov 2002
Location: Graz
Posts: 5013
kopier mal die sql abfrage herein

guvi

OC Addicted
Avatar
Registered: Aug 2001
Location: Bgld.
Posts: 685
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

Code: PHP
<?
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:

Code: PHP
value="<? echo $nachname  ?>

aber anscheinend hab ich es mir zu leicht vorgestellt, da es net geht :(

fleshmark

GameDev
Avatar
Registered: Aug 2000
Location: Wien
Posts: 2958
Code: PHP
$abfrage1 = "SELECT * FROM user";
$ergebnis1 = mysql_query($abfrage);

soll doch eher "$abfrage1" heissen oder? ;)

edit:

mit
Code: PHP
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
Avatar
Registered: Aug 2001
Location: Bgld.
Posts: 685
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:

Code: PHP
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)

Code: PHP
<? 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
Avatar
Registered: Aug 2000
Location: Wien
Posts: 2958
Code: PHP
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:
Code: PHP
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
Avatar
Registered: Aug 2001
Location: Bgld.
Posts: 685
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25944
DU MUSST DEBUGGEN!

guvi

OC Addicted
Avatar
Registered: Aug 2001
Location: Bgld.
Posts: 685
Zitat von mat
DU MUSST DEBUGGEN!

aha... :confused:

was heißt das? und wieso muss ich das machen?

dio

Here to stay
Registered: Nov 2002
Location: Graz
Posts: 5013
Zitat von guvi
aha... :confused:

was heißt das? und wieso muss ich das machen?
damit du eingrenzen kannst, wo der fehler passiert.

guvi

OC Addicted
Avatar
Registered: Aug 2001
Location: Bgld.
Posts: 685
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?
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz