- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 26-09-2002, 22:50
yoshi
 Newbie
Links : Onlinestatus : yoshi ist offline
Registriert seit: Sep 2002
Beiträge: 23
yoshi ist zur Zeit noch ein unbeschriebenes Blatt
Question Login Script Problem

Hi !

Da ich noch keine grossartige Erfahrung mit PHP und MySQL gesammelt habe, wäre ich über Hilfe bei einem Problem dankbar.

Es geht um ein Login Script das auf die Benutzer des Burning Boards 1.1.1 von Woltlab Zugreifen und so den dort Registrierten Mitgliedern es ermöglichen soll auf zusätzliche Features der Website selbst zuzugreifen.

Dieses Script verwende ich : http://www.texturen2000.de/php/freeportal/portal.html

Da wie ich schon erwähnt habe, ich kaum erfahrungen mit PHP habe und somit direkt am anfang stehe, weiss ich leider nicht wie ich das Script soweit umbauen soll damit sich die Forumsmitglieder dort einloggen können, registrieren sollen sie sich nur im Forum was ich noch soweit hingestrickt bekommen würde.

In der Datenbank werden die User Informationen in folgender Reihenfolge gespeichert :

userid
username
userpassword
useremail
regemail
userposts
groupid
statusextra
regdate
lastvisit
lastactivity
session_link
signatur
usericq
aim yim
userhp
age_m
age_d
age_y
avatarid
interests
location
work
gender
usertext
show_email_global
mods_may_email
users_may_email
invisible
hide_signature
hide_userpic
prunedays
umaxposts
bbcode
style_set
activation
blocked

Zum Password denke ich das es mit MD5 verschlüsselt ist ?!

Ist nicht alzueilig aber wäre Toll wenn jemand da ein wenig beschreiben könnte was zu machen ist, damit ein gewisser Lerneffekt eintritt.

Ich habe soweit geschaut welche der PHP Dateien für den Login relevant ist, wie sollte es anders sein ist es die login.php. Der Code sieht folgendermaßen aus :

<?php

require("dbcon.php");

$query = "SELECT password FROM $userdata_table WHERE loginname = '$Username'";
$query_result_handle = mysql_query ($query)
or die (mysql_errno() . " - " . mysql_error() . "<br>\n");

while ($result = mysql_fetch_row ($query_result_handle)){
$encrypted_password = crypt($Password,$result[0]);
if ($encrypted_password == $result[0]) {
$IP = getenv(REMOTE_ADDR);
$update = "UPDATE $userdata_table SET ip = '$IP', lastlogin = NOW() WHERE loginname = '$Username'";
$update_result_handle = mysql_query ($update)
or die ($update . "<br>" . mysql_errno() . " - " . mysql_error() . "<br>\n");
session_register("Username");
}
}

?>

Wie mache ich es nun das die Daten mit denen aus der vorhandenen Forums Datenbank genommen werden, wichtig ist das das Password soweit ich das beurteilen kann mit md5 verschlüsselt ist.

Ich denke das ich hier statt :

$query = "SELECT password FROM $userdata_table WHERE loginname = '$Username'";

einfach :

$query = "SELECT userpassword FROM $userdata_table WHERE username = '$Username'";

eingeben müsste damit das Script auf die Daten zugreift, liege ich da soweit richtig ?

nun ist noch die Sache mit md5 die zu erledigen wäre, wo ich überhaupt nichts zu sagen kann, da ich wie schon erwähnt absoluter anfänger bin.
Mit Zitat antworten
  #2 (permalink)  
Alt 26-09-2002, 23:41
Op@ U.
 Junior Member
Links : Onlinestatus : Op@ U. ist offline
Registriert seit: Aug 2002
Ort: Good old Germany
Beiträge: 155
Op@ U. ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Abend!

Also du hast vollkommen recht! Das Userpasswort ist mit md5 verschlüsselt in der DB gespeichert.
Wenn sich der User schon im Board angemeldet hat, kannst du doch einfach die Session-ID weitergeben, und auf jeder Seite überprüfen ob die Session gültig ist...
Und falls dies nicht der Fall sein sollte, rufst du einfach die login.php auf und wenn sich richtig angemeldet wurde, leitest du einfach auf die gewünschte Seite weiter und testest wieder die Session-ID...
Mit Zitat antworten
  #3 (permalink)  
Alt 27-09-2002, 02:39
CHnuschti
 Member
Links : Onlinestatus : CHnuschti ist offline
Registriert seit: Feb 2002
Beiträge: 287
CHnuschti ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich hab das mal im Zusammenhang mit phpbb2.x gemacht, es ist recht simpel.

Um zu überprüfen, ob sich ein Einloggender Mitglied des Boards ist, machst du einfach ein Formular, wo username und pass eingegeben/abgefragt wird.
a) Formular mit Eingabe username, pass. Dieses absenden
b) Auf der nächsten Seite:

$pass=trim($pass);
$username=trim($username);
$pass_md5_eingabe=md5($pass);

$host = "localhost"; $login = "der_login"; $pass = "der_pass"; $database = "die_datenbank";

$db = mysql_connect($host, $login, $pass);

$query = "SELECT userpassword FROM userdata_table WHERE binary username = '$username'";
// binary berücksichtigt Gross- und Kleinschreibung korrekt

$resultat = mysql_db_query($database, $query);
$zeilen = mysql_num_rows($resultat);

$pass_md5_db = mysql_result($resultat, 0, "userpassword");

mysql_close($db);

// hier nun die Überprüfung

if ($zeilen == 0)
echo "Dieser username ist nicht registriert. Eingabe wiederholen";

if ($zeilen > 1)
echo = "Fehler in Datenbank, username ist mehrfach registriert";

if ($zeilen == 1 && $pass_md5_eingabe !== $pass_md5_db)
echo = "username ist registriert, aber userpasswort ist falsch. Eingabe wiederholen";

if ($zeilen == 1 && $pass_md5_eingabe == $pass_md5_db)
{
echo "alles OK, eingeloggt";
// weitere Anweisungen
}

Ansonsten wie oben gesagt, sauge dir das ganze aus den Sessions-Ablagen. Das funktioniert m.E. allerdings nur so lange, wie der User im Board eingeloggt ist.

Geändert von CHnuschti (27-09-2002 um 02:46 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 30-09-2002, 17:59
yoshi
 Newbie
Links : Onlinestatus : yoshi ist offline
Registriert seit: Sep 2002
Beiträge: 23
yoshi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Erstmal Danke für eure Hilfe!

Was die Sessions angeht wollte ich das so bewerkstelligen das sich nicht erst jemand im Forum eingeloggt haben muss um dann die zusätzlichen Features zu nutzen.

Ich habe das Beispiel von CHnuschti ausprobiert und einiges dazugelernt, nur benötige ich die änderungen in dem von mir verwendeten Script, weil ich das schon bei mir laufen habe, nur möchte ich nun auf die Datenbank des Forums zrückgreifen so das sich niemand extra anmelden muss.

Ich wäre über einige Tips für diese änderungen dankbar, da ich im moment nicht sehr viel Zeit habe um mich wirklich ernsthaft mit PHP und Mysql zu beschäftigen.

Falls dann noch jemand so nett sein könnte und mir zeigt wie ich es bewerkstellige das sich der User nur einmal einloggen muss und nach einem Monat erst wieder, wäre ich ebenfalls sehr dankbar.

Ich hoffe ich gehe euch nicht auf die Nerven !
Mit Zitat antworten
  #5 (permalink)  
Alt 26-10-2002, 13:21
yoshi
 Newbie
Links : Onlinestatus : yoshi ist offline
Registriert seit: Sep 2002
Beiträge: 23
yoshi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So, nun habe ich das ganze nochmals durchgegangen und habe nun folgendendes Problem, erstmal hier der Code :

<?php

$pass=trim($pass);
$username=trim($username);
$pass_md5_eingabe=md5($pass);

$host = "localhost"; $login = "login"; $pass = "pass"; $database = "bb1_user_table";
$db = mysql_connect($host, $login, $pass);

$query = "SELECT userpassword FROM userdata_table WHERE binary username = '$username'";

$resultat = mysql_db_query($database, $query);
$zeilen = mysql_numrows($resultat);
$pass_md5_db = mysql_result($resultat, 0, "userpassword");

mysql_close($db);


if ($zeilen == 0) {
echo ("Dieser username ist nicht registriert. Eingabe wiederholen");}

if ($zeilen > 1) { echo ("Fehler in Datenbank, username ist mehrfach registriert");}

if ($zeilen == 1 && $pass_md5_eingabe !== $pass_md5_db)
{ echo ("username ist registriert, aber userpasswort ist falsch. Eingabe wiederholen");}

if ($zeilen == 1 && $pass_md5_eingabe == $pass_md5_db)
{ SetCookie("couser", $username, time()+2678400, '/');
print("<a href=\"http://localhost/main.php\">hier gehts weiter</a> ");echo $username;}
?>

Bei dem ausführen kommen folgende meldungen :

Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\login\check.php on line 17

Zeile 17 :
$zeilen = mysql_numrows($resultat);


Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\login\check.php on line 18
Dieser username ist nicht registriert. Eingabe wiederholen

Zeile 18 :
$pass_md5_db = mysql_result($resultat, 0, "userpassword");

Nunja, immerhin bin ich schon einen Schritt weiter mit meinen Kenntnissen gekommen so das augenscheinlich nur noch diese Probleme zu beheben sind, ich wäre immernoch über jede Hilfe erfreut.

Was mir noch im Kopf herumschwirrt ist das mit dem Cookie, solange kein Output vorhanden ist müsste das doch so funktionieren oder ?
Mit Zitat antworten
  #6 (permalink)  
Alt 26-10-2002, 23:32
yoshi
 Newbie
Links : Onlinestatus : yoshi ist offline
Registriert seit: Sep 2002
Beiträge: 23
yoshi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich habe den Fehler gefunden, ich hatte für die Datenbank den table mit den Userdaten angegeben, als ich es korrigierte funktionierte es.

Nun hatt sich ein weiteres Problem ergeben bei dem ich absolut nicht weiterkomme, wäre für einen Tip dankbar :

Warning: Unable to jump to row 0 on MySQL result index 2 in C:\apache\htdocs\login\check.php on line 23

Hier der Code für Zeile 23 :

$pass_md5_db = mysql_result($resultat,0,"userpassword");



Geändert von yoshi (27-10-2002 um 00:10 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 27-10-2002, 18:18
yoshi
 Newbie
Links : Onlinestatus : yoshi ist offline
Registriert seit: Sep 2002
Beiträge: 23
yoshi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Weiss keiner einen Rat ?
Mit Zitat antworten
  #8 (permalink)  
Alt 28-10-2002, 22:21
yoshi
 Newbie
Links : Onlinestatus : yoshi ist offline
Registriert seit: Sep 2002
Beiträge: 23
yoshi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kann mir jemand einen kleinen Tip geben, ich bin fast am verzweifeln, es funktioniert ja im endeffekt nur das ein Benutzer der nicht Registriert ist diese Fehlermeldung bekommt !
Mit Zitat antworten
  #9 (permalink)  
Alt 28-10-2002, 23:53
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

ich denke, dass die SQL-anfrage kein ergebnis liefert.
du schreibst ja auch, dass es nur bei nicht registrierten users auftritt. also sind diese auch nicht in der DB erfasst.

mach doch einfach ein @ vor den befehl.

PHP-Code:
$pass_md5_db = @mysql_result($resultat,0,"userpassword"); 
und schon verschwindet die fehlermeldung. ist aber nicht sehr schön.

lies mal auf http://de.php.net/manual/de/function.mysql-result.php ob du bessere alternativen findest.
Mit Zitat antworten
  #10 (permalink)  
Alt 28-10-2002, 23:56
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

warum verwendest du eigentlich mal print() und mal echo. einige dich mal auf eins. das erhöht auf dauer die übersichtlichkeit .....

PHP-Code:
print("<a href=\"http://localhost/main.php\">hier gehts weiter</a> ");echo $username;} 
Mit Zitat antworten
  #11 (permalink)  
Alt 29-10-2002, 11:28
yoshi
 Newbie
Links : Onlinestatus : yoshi ist offline
Registriert seit: Sep 2002
Beiträge: 23
yoshi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke für die Hilfe, so läuft es genauso wie ich es benötige!

Das mit dem echo und print werde ich beherzigen.

Nochmals Danke an alle für die Hilfe !
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:43 Uhr.