Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 01:50

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



PHP Login Script mit Registrierung

Discussion on PHP Login Script mit Registrierung within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Feb 2010
Posts: 141
Received Thanks: 25
PHP Login Script mit Registrierung

Hallo
ich wollte für mein kleines Projekt ein Login Script machen. Habe mir das Video angeschaut
. Nur leider, wenn ich ein Account Registriere. Meint er es wäre erfolgreich, nur der erstellte Account ist in MySQL nicht zu finden.
Die PHP Skripts + SQL Datei sind im Anhang.
Attached Files
File Type: rar PHP.rar (2.5 KB, 17 views)
Speed93 is offline  
Old 01/30/2014, 19:18   #2

 
adistoe's Avatar
 
elite*gold: 63
Join Date: Oct 2012
Posts: 1,181
Received Thanks: 139
PHP Code:
function register($username$password)
{
    
$hashedPassword buildHash($password);
    
    
$sql "INSERT INTO 'users'
            ('username','password')
            VALUES("
.mysql_real_escape_string($username).",".$hashedPassword.");";
        
    
mysql_query($sql);
    
    return 
tryLogin($username$password);

Hast du das Insert mal von Hand ausgeführt, zum Test?
Bist du sicher, dass es ausgeführt wird?

Hinweis zum Test:
PHP Code:
    mysql_query($sql) or die(mysql_error()); 
adistoe is offline  
Thanks
1 User
Old 01/30/2014, 20:20   #3
 
lnqlorlouz's Avatar
 
elite*gold: 0
Join Date: Jun 2013
Posts: 405
Received Thanks: 84
Wenn ich das Script ausführe, gibt er mir die Fehlermeldung:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''users' ('username','password') VALUES(Benny,$$$$$OurConstantSaltRules' at line 1
Das $$$$ ist nur das weggemachte Passwort.
lnqlorlouz is offline  
Thanks
1 User
Old 01/30/2014, 21:01   #4
 
elite*gold: 0
Join Date: Feb 2010
Posts: 141
Received Thanks: 25
ja da kommt eine Meldung "Unknown column '$$$' in 'field list'"
$$$ Stand der Username drin.
Aber die Spalte gibt es doch in der Datenbank.
Speed93 is offline  
Old 01/30/2014, 21:49   #5
 
lnqlorlouz's Avatar
 
elite*gold: 0
Join Date: Jun 2013
Posts: 405
Received Thanks: 84
Quote:
Originally Posted by Speed93 View Post
ja da kommt eine Meldung "Unknown column '$$$' in 'field list'"
$$$ Stand der Username drin.
Aber die Spalte gibt es doch in der Datenbank.
Kann mit der Fehlermeldung selber nicht viel anfangen. Würde aber auch gerne das Problem wissen. Hier gibt es doch genug Experten.
lnqlorlouz is offline  
Thanks
1 User
Old 01/31/2014, 06:30   #6
 
paddelx3's Avatar
 
elite*gold: 0
Join Date: Feb 2012
Posts: 202
Received Thanks: 133
Quote:
Originally Posted by adistoe View Post
PHP Code:
function register($username$password)
{
    
$hashedPassword buildHash($password);
    
    
$sql "INSERT INTO 'users'
            ('username','password')
            VALUES("
.mysql_real_escape_string($username).",".$hashedPassword.");";
        
    
mysql_query($sql);
    
    return 
tryLogin($username$password);

Hast du das Insert mal von Hand ausgeführt, zum Test?
Bist du sicher, dass es ausgeführt wird?

Hinweis zum Test:
PHP Code:
    mysql_query($sql) or die(mysql_error()); 

Ich bin leider derzeit Unterwegs und kann es deshalb nicht genau Überprüfen.
Aber in der Datei config.php die function
PHP Code:
function buildHash($password)
{
    return 
crypt($password'$2a$10$OurConstantSaltRules12$');

Wenn ich mich recht entsinne setzt er einfach vor den verschlüsselten $password den Salt.

Somit würde wir dann sowas hier rauskriegen:
PHP Code:
$2a$10$OurConstantSaltRules##################### 
Wenn wir das ganze nun in unseren Quere Aufrufen erwatet dieser bei $2,$10,$OurConstantSaltRules einen Wert der nicht vorhanden ist, kann es aber wie gesagt leider nicht überprüfen.

Aber probier mal folgendes, ersetz deine Funktion Crypt mit:
PHP Code:
function buildHash($password)
{
    return 
md5('$2a$10$OurConstantSaltRules12$'.$password);

Zudem find ich die Stelle persönlich auch nicht wirklich schön.
PHP Code:
$sql "INSERT INTO 'users'
            ('username','password')
            VALUES("
.mysql_real_escape_string($username).",".$hashedPassword.");"
~ Wozu die ' Zeichen bei user ? Wenn schon `.
~ Wozu die ' Zeichen bei den Feldern?
~ Wozu der Verkettungsoperator bei "" ?

PHP Code:
$sql "INSERT INTO `users`
            (username,password)
            VALUES("
{mysql_real_escape_string($username)}","{$hashedPassword}")"
lg.
Entschuldige falls ich Fehler drinnen haben sollte es ist immerhin früh morgens und hab das ganze via Handy geschrieben
paddelx3 is offline  
Thanks
1 User
Old 01/31/2014, 11:42   #7
 
elite*gold: 0
Join Date: Feb 2010
Posts: 141
Received Thanks: 25
Wenn ich in der Zeile VALUES("{mysql_real_escape_string($username)}","{$ hashedPassword}");";
die {} einsetzte bekomme ich ein Error:
Parse error: syntax error, unexpected '{' in C:\xampp\htdocs\Projekt\config.php on line 49
und wenn ich Punkte da mache
VALUES(".mysql_real_escape_string($username).",".$ hashedPassword.");";
bekomme ich die Meldung:
Unknown column 'TestUser' in 'field list'

@paddelx3
Kein ding. Ich finde es schon super das ich hilfe bekomme

/edit
hab den Fehler gefunden
ich hab in der Zeile VALUES("$username'",".$hashedPassword.");";
hab ich die " durch ein ' ersetzt.
VALUES('$username','.$hashedPassword.');";
jetzt gehts
Vielen dank an alle!

/edit 2
tja zu früh gefreut.
Nach der registrierung habe ich noch ein Problem.
Jetzt wenn ich mich mit dem erstellte Account anmelden will.Komme ich auf die secured.php und da oben steht, dann
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Projekt\config.php on line 35
Aktuelle Config.php
PHP Code:
<?php
session_start
();
$mysql['user'] = "root";
$mysql['password'] = "";
$mysql['host'] = "127.0.0.1";
$mysql['db'] = "login";

//Nichts ändern!
//Verbindung zum MySQL Server.
mysql_connect($mysql['host'], $mysql['user'], $mysql['password']) OR die ('Database connection failed');
mysql_select_db($mysql['db']) OR die ('Database not found');

//Wird geschaut, ob ein User eingeloggt ist.
function isLoggedin()
{
    return isset(
$_SESSION['username']);
}

function 
buildHash($password)
{
    return 
md5('$2a$10$OurConstantSaltRules12$'.$password); 
}

function 
tryLogin($username$password)
{
    
$password buildHash($password);
    
    
$sql "SELECT username
            FROM users
            WHERE username = "
.$username."
            AND password = "
.$password."
            LIMIT 1;"
;
    
$result mysql_query($sql);
    
    if(
mysql_num_rows($result) > 0);
    {
        
$_SESSION['username'] = $username;
        return 
true;
    }
    return 
false;
}

function 
register($username$password)
{
    
$hashedPassword buildHash($password);
    
    
$sql "INSERT INTO `users`
            (username,password)
            VALUES('
$username','.$hashedPassword.');";
        
    
mysql_query($sql) or die(mysql_error()); 
    
    return 
tryLogin($username$password);
}

function 
logout()
{
    
session_destroy();
    
session_start();
}

?>

So hab alle Fehler gefunden
das ist richtig
WHERE username = '.$username.'
AND password = '.$password.'

und nicht
WHERE username = ".$username."
AND password = ".$password."
Speed93 is offline  
Old 01/31/2014, 13:30   #8


 
.Marcel''s Avatar
 
elite*gold: 100
Join Date: Sep 2009
Posts: 8,143
Received Thanks: 2,763
mysql_* ist veraltet...
.Marcel' is offline  
Old 01/31/2014, 17:09   #9
 
lnqlorlouz's Avatar
 
elite*gold: 0
Join Date: Jun 2013
Posts: 405
Received Thanks: 84
Mir sind bei deinem Script viele Fehler/Verbesserungen vorgekommen.
Dein Script testet nicht ob ein User schon einmal angelegt wurde.
Man kann sich sogar registrieren, indem man gar nichts eingibt.
Bei mir kann man auch auf die secured.php obwohl ich nicht einmal eingeloggt bin.

Und das Passwort würde ich nochmal überprüfen, sprich so:
Passwort:
Passwort wiederholen:

Ist sicherer für die User. Wollte ich einfach mal so noch anmerken, falls du das Script für etwas "sicheres" verwendest. Weil Sicherheit ist im Internet wirklich wichtig.

Hier ein kleiner Codeschnippsel aus meinem alten Login-Script, das ganz schlicht war.
Du könntest eine if-Abfrage machen, ob das Passwort mit dem ersten Passwort übereinstimmt.

PHP Code:
$username $_POST["username"]; 
$passwort $_POST["passwort"]; 
$passwort2 $_POST["passwort2"]; 

if(
$passwort != $passwort2 OR $username == "" OR $passwort == ""
    { 
    echo 
"Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"register.php\">Zurück</a>"
    exit; 
    } 
Kann sein das du das noch abändern musst. Bzw. musst du. Da wir ja "passwort2" haben.

Im register.php:
PHP Code:
<p>Passwort wiederholen: <input type="password" name="passwort2"></p
lnqlorlouz is offline  
Thanks
1 User
Old 01/31/2014, 21:34   #10
 
elite*gold: 0
Join Date: Feb 2010
Posts: 141
Received Thanks: 25
Danke für dein Tipp. Dieses Script ist nur für ein kleines Schulprojekt. Werde es nicht im Internet benutzten.
Speed93 is offline  
Old 02/01/2014, 14:16   #11


 
elite*gold: 0
Join Date: Feb 2010
Posts: 7,220
Received Thanks: 6,758
Quote:
Originally Posted by .Marcel' View Post
mysql_* ist veraltet...
Für kleinere Projekte reicht dies trotzdem noch, auch wenn es im nächsten Major Update entfernt wird.
#SoNiice is offline  
Old 02/01/2014, 22:19   #12


 
.Marcel''s Avatar
 
elite*gold: 100
Join Date: Sep 2009
Posts: 8,143
Received Thanks: 2,763
Quote:
Originally Posted by SoNiice View Post
Für kleinere Projekte reicht dies trotzdem noch, auch wenn es im nächsten Major Update entfernt wird.
Ist mir bewusst, jedoch wollte ich nur darauf hinweisen.
.Marcel' is offline  
Old 02/03/2014, 05:46   #13
 
clad3815's Avatar
 
elite*gold: 0
Join Date: Feb 2009
Posts: 290
Received Thanks: 227
PHP Code:
<?php
session_start
();
$mysql['user'] = "root";
$mysql['password'] = "";
$mysql['host'] = "localhost";
$mysql['db'] = "login";

//Nichts ändern!
//Verbindung zum MySQL Server.
$CONNECT_DATABASE = new PDO("mysql:host=".$mysql['host'].";dbname=".$mysql['db'],$mysql['user'],$mysql['password']);

/*
mysql_connect($mysql['host'], $mysql['user'], $mysql['password']) OR die ('Database connection failed');
mysql_select_db($mysql['db']) OR die ('Database not found');
*/
//Wird geschaut, ob ein User eingeloggt ist.
function isLoggedin()
{
    return isset(
$_SESSION['username']);
}

function 
buildHash($password)
{
    
$HASH_KEY "TestTestTestCrypt";
    return 
md5($password."-".$HASH_KEY);
}

function 
tryLogin($username$password)
{
    
$password buildHash($password);
    
    
$sql "SELECT 'username'
            FROM 'users'
            WHERE 'username' = "
.$CONNECT_DATABASE->quote($usernamePDO::PARAM_STR)."
            AND 'password' = '"
.$password."'
            LIMIT 1;"
;
    
//$result = mysql_query($sql);
    
$query_sql $CONNECT_DATABASE->query($sql);
    
$result $query_sql->fetch(PDO::FETCH_OBJ);
    if(
$result->username)
    {
        
$_SESSION['username'] = $username;
        return 
true;
    }else{
        return 
false;
    }
}

function 
register($username$password)
{
    
$hashedPassword buildHash($password);
    
    
$sql "INSERT INTO 'users'
            ('username','password')
            VALUES("
.$CONNECT_DATABASE->quote($usernamePDO::PARAM_STR).",'".$hashedPassword."');";
        
    
//mysql_query($sql);
    
$query_sql $CONNECT_DATABASE->exec($sql);
        if(
$query_sql && tryLogin($username$password)){
            return 
true;
        }else{
            return 
false;
        }
}

function 
logout()
{
    
session_unset($_SESSION['username']);
}

?>
I think it's better if you use PDO mysql_* function are obsolete
clad3815 is offline  
Old 02/03/2014, 07:09   #14


 
elite*gold: 0
Join Date: Feb 2010
Posts: 7,220
Received Thanks: 6,758
Quote:
Originally Posted by clad3815 View Post
PHP Code:
<?php
session_start
();
$mysql['user'] = "root";
$mysql['password'] = "";
$mysql['host'] = "localhost";
$mysql['db'] = "login";

//Nichts ändern!
//Verbindung zum MySQL Server.
$CONNECT_DATABASE = new PDO("mysql:host=".$mysql['host'].";dbname=".$mysql['db'],$mysql['user'],$mysql['password']);

/*
mysql_connect($mysql['host'], $mysql['user'], $mysql['password']) OR die ('Database connection failed');
mysql_select_db($mysql['db']) OR die ('Database not found');
*/
//Wird geschaut, ob ein User eingeloggt ist.
function isLoggedin()
{
return isset(
$_SESSION['username']);
}

function 
buildHash($password)
{
$HASH_KEY "TestTestTestCrypt";
return 
md5($password."-".$HASH_KEY);
}

function 
tryLogin($username$password)
{
$password buildHash($password);

$sql "SELECT 'username'
FROM 'users'
WHERE 'username' = "
.$CONNECT_DATABASE->quote($usernamePDO::PARAM_STR)."
AND 'password' = '"
.$password."'
LIMIT 1;"
;
//$result = mysql_query($sql);
$query_sql $CONNECT_DATABASE->query($sql);
$result $query_sql->fetch(PDO::FETCH_OBJ);
if(
$result->username)
{
$_SESSION['username'] = $username;
return 
true;
}else{
return 
false;
}
}

function 
register($username$password)
{
$hashedPassword buildHash($password);

$sql "INSERT INTO 'users'
('username','password')
VALUES("
.$CONNECT_DATABASE->quote($usernamePDO::PARAM_STR).",'".$hashedPassword."');";

//mysql_query($sql);
$query_sql $CONNECT_DATABASE->exec($sql);
if(
$query_sql && tryLogin($username$password)){
return 
true;
}else{
return 
false;
}
}

function 
logout()
{
session_unset($_SESSION['username']);
}

?>
I think it's better if you use PDO mysql_* function are obsolete
I think he should learn MySQLi instead of PDO
#SoNiice is offline  
Old 02/03/2014, 07:51   #15
 
3lue's Avatar
 
elite*gold: 5
The Black Market: 204/0/0
Join Date: Feb 2012
Posts: 8,552
Received Thanks: 411
Was ist eigentlich der Unterschied zwischen MySQL_* und MySQLi_*?
3lue is offline  
Reply


Similar Threads Similar Threads
[VB.NET] [How To]Login und Registrierung in ein Programm einbauen
05/20/2015 - Coding Tutorials - 36 Replies
Hallo, In diesem Tutorial zeig ich euch wie ihr einen Login + Registrierung mit MYSQL programmiert. 1. Was brauchen wir? Eine Mysql Datenbank die Externen Zugriff Erlaubt, die bekommen wir z.b. hier kostenlos: HIER MYSQL Visual Basic 2008
[C++] [Help] Login System mit Registrierung
06/16/2012 - C/C++ - 1 Replies
Wie im Titel schon gesagt ein Login-System, wo man sich registrieren muss. Und wie(habe ich mich schon immer gefragt) mache ich dann so eine Datenbank die die Registrierungen speichert und man sich dann nur einen nicht vergebenen Namen aussuchen kann etc.. also wie bei so einem Forum, halt nur das es ein Programm ist Würde mich freuen, wenn mir einer dabei helfen würde ;) MfG Razer'
FTP Login+Registrierung Problem
10/10/2011 - General Coding - 5 Replies
hi, Habe mein Login per ftp gemacht. Also so: wc.Credentials = New Net.NetworkCredential("user", "Meinpw") TextBox3.Text = wc.DownloadString("Mein ftp server" + TextBox1.Text + TextBox2.Text + ".txt")
Login + Registrierung ohne server!
12/06/2010 - Coding Tutorials - 17 Replies
Hallo also hier zeige ich euch mal eine methode wie ihr eine Login box mit Registrierung braucht. Was ist hier anders wie bei den anderen tuts? Ganz einfach ihr braucht wirklich nur visual basic 2008 und müsst euch auf keiner anderen seite anmelden! Was brauche ich? 2formen in die erste form kommt: 2x Label
[php]Registrierung Script
06/13/2009 - Web Development - 5 Replies
€dit: sorry mein Bruder hatte gedacht er muss mein Account verwenden -.-. Könnt ihr closen



All times are GMT +1. The time now is 01:51.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.