Wunderbar... manchmal kann es doch so einfach sein wenn man die Lösung sieht. Danke! Funktioniert tadellos
[Tutorial] Login + Registrierung über eine MySql-DB [+ Hilfedateien]
-
Jautois -
25. August 2009 um 23:55
-
-
Und leider muss er nochma gepusht werden <_<
Und zwar bekomme ich leider immernoch. Selbst nach mehrfachen Testen den Fehler zurück das der Benutzer nicht Existiert.
dabei bin ich mir zu 100% sicher das er existiert.
Könnte mir da bitte jemand helfen? Gerne auch über TeamViewer.
Webspace Anbieter: EasyCore bzw. Fanatic ServerCode:
[autoit][/autoit][autoit][/autoit][autoit]#include
[/autoit][autoit][/autoit][autoit]_Login("Test","Test")
[/autoit][autoit][/autoit][autoit]
; Ein Loginbeispiel zum Testen:
; Benutername: Test
; Passwort: HalloFunc _Login($sBenutzername = "", $sPasswort = "")
[/autoit][autoit][/autoit][autoit]
$iRValue = _INetGetSource("http://easycore.de/files/MySql/login.php?benutzername=" & $sBenutzername & "&passwort=" & $sPasswort)
; Statt tragt ihr hier bitte die URL zur login.php-Datei auf dem Webspace ein
; Öffnet die Seite und führt dabei die login.php-Datei aus. Die php-Datei arbeitet nun ihren Code ab und gibt entweder ...
; 0 - Benutzername stimmt nicht (nicht vorhanden) oder ...
; 1 - Passwort und Benutzername stimmt oder ...
; 2 - Passwort stimmt nicht
; ... ausSwitch $iRValue ; je nach Rückgabewert der login.php-Datei wird nun weiter verfahren:
[/autoit]
Case 0 ; - Benutzername stimmt nicht (nicht vorhanden)
MsgBox(16,"Error","Benutzername ist nicht registriert!")
Case 1 ; - Passwort und Benutzername stimmt
MsgBox(32,"Info","Erfolgreich eingeloggt!")
Case 2 ; - Passwort stimmt nicht
MsgBox(16,"Error","Passwort ist falsch!")
EndSwitch
EndFunc ;==>_Login[PHP]
$host = "localhost";
// Nicht verändern - bleibt bei Funpic und den meisten anderen Hostern gleich$user = "web681";
// Verändern! - Hier müsst ihr den Username eingeben der bei Funpic unter "MySql-Daten" steht$pass = "---";
// Verändern! - Hier müsst ihr das Passwort eingeben das bei Funpic unter "MySql-Daten" steht$dbase = "usr_web681_1";
// Verändern! - Hier müsst ihr den Namen der Datenbank eingeben der bei Funpic unter "MySql-Daten" steht
?>
[/PHP][PHP]
// PHP-Code Beginn
require_once('db_config.php');
// Die Datenbankverbindungsdaten einbinden, damit die Funktion "mysql_connect" funktioniertmysql_connect($host, $user, $pass);
// Öffnet eine Verbindung zu dem MySql-Servermysql_select_db($dbase);
// Wählt die Datenbank $dbase aus$Benutzername = mysql_real_escape_string($HTTP_GET_VARS['benutzername']);
// In der Variable steht der String der in der Url nach "benutzername=" übermittelt wurde$Passwort = mysql_real_escape_string($HTTP_GET_VARS['passwort']);
// In der Variable steht der String der in der Url nach "passwort=" übermittelt wurde$result = mysql_query("SELECT * FROM User_Daten WHERE Benutzername='" . $Benutzername . "'");
// Sendet die Anfrage an die MySql-DB: "Wähle alle Daten aus der Tabelle User_Daten wo der Benutzername gleich $Benutzername ist"
// !!! Achtung !!! - Habt ihr vorher den Namen der Tabelle verändert müsst ihr logischerweise auch den neuen Namen verwenden$row = mysql_fetch_row($result);
// mysql_fetch_row($result) gibt ein Array zurück mit allen Daten aus der Spalte in der der Benutzername gleich $Benutzername istif ($row)
// Wenn ein Datensatz gefunden wurde
{
// ... Benutzername ist also schonmal vorhanden in der DB$Dbmd5Passwort = $row[1];
// Die Variable $Dbmd5Passwort enthält nun das Passwort als MD5-String
// mysql_fetch_row in Zeile 34 hatte ein Array zurück gegeben, deshalb $row[1]
// In der DB ist die Passwortspalte die zweite Spalte von oben - somit $row[1] ( die Spalten sind von 0 ab nummeriert)if (md5($Passwort) == $Dbmd5Passwort)
// Wenn das übermittelte Passwort in MD5 mit dem Passwort aus der DB übereinstimmt
{
// Passwort stimmtecho 1;
// Gib eine 1 aus
}
else
// Ansonsten
{
// Passwort stimmt nichtecho 2;
// Gib eine 2 aus
}
}
else
// Ansonsten
{
// Benutzername nicht vorhandenecho 0;
// Gib eine 0 aus
}// PHP-Code Ende
?>
[/PHP]benutzername: Test
Passwort: TestDanke für die hilfe..
-
habe mir das Script mal angesehen, aber bei mir wird kein Benutzername geschrieben.
Das PW wird in Md5 geschrieben aber das wars auch schon, weiss einer wo da der Fehler liegt.
-
Hey,
ich habe das gleiche Problem wie Benman. Bei mir wird auch angezeigt, dass der Benutzername nicht existiert. Hat sich vielleicht etwas geändert, was im Tutorial noch nicht beachtet wurde.
Php-Dateien wurden wie beschrieben geändert und der Benutzer ist auch in der Datenbank vorhanden. Ich wäre über eure Hilfe sehr dankbar.
Spoiler anzeigen
PHP
Alles anzeigen<?php // PHP-Code Beginn require_once('db_config.php'); // Die Datenbankverbindungsdaten einbinden, damit die Funktion "mysql_connect" funktioniert mysql_connect($host, $user, $pass); // Öffnet eine Verbindung zu dem MySql-Server mysql_select_db($dbase); // Wählt die Datenbank $dbase aus $Benutzername = mysql_real_escape_string($HTTP_GET_VARS['benutzername']); // In der Variable steht der String der in der Url nach "benutzername=" übermittelt wurde $Passwort = mysql_real_escape_string($HTTP_GET_VARS['passwort']); // In der Variable steht der String der in der Url nach "passwort=" übermittelt wurde $result = mysql_query("SELECT * FROM User_Daten WHERE Benutzername='" . $Benutzername . "'"); // Sendet die Anfrage an die MySql-DB: "Wähle alle Daten aus der Tabelle User_Daten wo der Benutzername gleich $Benutzername ist" // !!! Achtung !!! - Habt ihr vorher den Namen der Tabelle verändert müsst ihr logischerweise auch den neuen Namen verwenden $row = mysql_fetch_row($result); // mysql_fetch_row($result) gibt ein Array zurück mit allen Daten aus der Spalte in der der Benutzername gleich $Benutzername ist if ($row) // Wenn ein Datensatz gefunden wurde { // ... Benutzername ist also schonmal vorhanden in der DB $Dbmd5Passwort = $row[1]; // Die Variable $Dbmd5Passwort enthält nun das Passwort als MD5-String // mysql_fetch_row in Zeile 34 hatte ein Array zurück gegeben, deshalb $row[1] // In der DB ist die Passwortspalte die zweite Spalte von oben - somit $row[1] ( die Spalten sind von 0 ab nummeriert) if (md5($Passwort) == $Dbmd5Passwort) // Wenn das übermittelte Passwort in MD5 mit dem Passwort aus der DB übereinstimmt { // Passwort stimmt echo 1; // Gib eine 1 aus } else // Ansonsten { // Passwort stimmt nicht echo 2; // Gib eine 2 aus } } else // Ansonsten { // Benutzername nicht vorhanden echo 0; // Gib eine 0 aus } // PHP-Code Ende ?>
PHP
Alles anzeigen<?php $host = "localhost"; // Nicht verändern - bleibt bei Funpic und den meisten anderen Hostern gleich $user = "holydb"; // Verändern! - Hier müsst ihr den Username eingeben der bei Funpic unter "MySql-Daten" steht $pass = "Hier steht mein PW!"; // Verändern! - Hier müsst ihr das Passwort eingeben das bei Funpic unter "MySql-Daten" steht $dbase = "holydb"; // Verändern! - Hier müsst ihr den Namen der Datenbank eingeben der bei Funpic unter "MySql-Daten" steht ?>
[Blockierte Grafik: http://img4.fotos-hochladen.net/uploads/datenbank4i9nzmtyaf.png]
[autoit]#include <INet.au3>
[/autoit] [autoit][/autoit] [autoit]_Login("Hallo","Hallo")
[/autoit] [autoit][/autoit] [autoit]
; Ein Loginbeispiel zum Testen:
$Benutername = "test"
$Passwort = "test"Func _Login($sBenutzername = "", $sPasswort = "")
[/autoit]
$iRValue = _INetGetSource("ftp://holybotting.ho.funpic.de/login.php?benutzername=" & $sBenutzername & "&passwort=" & $sPasswort)
; Statt <URL> tragt ihr hier bitte die URL zur login.php-Datei auf dem Webspace ein
; Öffnet die Seite und führt dabei die login.php-Datei aus. Die php-Datei arbeitet nun ihren Code ab und gibt entweder ...
; 0 - Benutzername stimmt nicht (nicht vorhanden) oder ...
; 1 - Passwort und Benutzername stimmt oder ...
; 2 - Passwort stimmt nicht
; ... aus
MsgBox(0, "Test", $iRValue)
Switch $iRValue ; je nach Rückgabewert der login.php-Datei wird nun weiter verfahren:
Case 0 ; - Benutzername stimmt nicht (nicht vorhanden)
MsgBox(16,"Error","Benutzername ist nicht registriert!")
Case 1 ; - Passwort und Benutzername stimmt
MsgBox(32,"Info","Erfolgreich eingeloggt!")
Case 2 ; - Passwort stimmt nicht
MsgBox(16,"Error","Passwort ist falsch!")
EndSwitch
EndFunc ;==>_LoginIch lasse mir _INetGetSource auch in einer MsgBox ausgeben. Diese ist leider komplett leer. Ist das richtig?
-
Ich glaub Ich werde das Tutorial mal neumachen, damit dieser Thread hier ein Frieden ruhen kann
-
Zu Maui:
Dein Fehler liegt einfach nur darin, dass du die falsche Internetadresse zur PHP-Datei angibst. Du darfst logischerweise nicht den "ftp"-Pfad angeben, da dort Rechte benötigt werden. Stattdessen musst du "http" verwenden und alles klappt.
Ist also ein Fehler eurerseits. Ich hoffe ich konnte helfen ...
-
Danke schonmal für die schnelle Hilfe Codefixer.
Leider funktioniert es immer noch nicht so ganz
Also meine Msg-Box gibt mir folgendes aus :
Spoiler anzeigen
0<script type="text/javascript">
var _gaq = _gaq
[];
_gaq.push(['_setAccount', 'UA-16106315-4']);
_gaq.push(['_setDomainName', '.funpic.de']);
_gaq.push(['_trackPageview']);(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();</script>>
Ich habe auch schon versucht den Link manuell in den Browser einzugeben. Da bekomme ich aber jedesmal eine 0 zurück, also Benutzer ist nicht registriert. Hast du zufällig noch einen anderen Fehler gesehen / wüsstest was ich ändern muss?
-
Der Text aus der MsgBox lässt sich leicht zurückverfolgen. Gehst du auf die Seite der login.php und schaust dir den Quelltext an, so siehst du:
Code
Alles anzeigen0<script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-16106315-4']); _gaq.push(['_setDomainName', '.funpic.de']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script>
Funpic scheint wohl neuerdings einen Javacode mit auszugeben, der laut dem Quellcode, eine Statistik füttert (".google-analytics.com").
Wenn du den Link manuell eingibst und den Benutzer und das Passwort anhängst was wird dann ausgegeben?
Also -
Die Idee hatte ich auch schon XD. Leider wird mir auch hier die 0 zurückgegeben --> Nutzer existiert nicht. Habe jetzt aber schon mehrmals in der DB nachgeschaut und den Nutzer gelöscht / neu angelegt.
-
Mein Problem ist ich bekomme die Werte nicht wenn ich die Seite über das AutoIt-Script aufrufe.
Meine login.php:
PHP
Alles anzeigen<?php // PHP-Code Beginn require_once('db_config.php'); // Die Datenbankverbindungsdaten einbinden, damit die Funktion "mysql_connect" funktioniert mysql_connect($host, $user, $pass); // Öffnet eine Verbindung zu dem MySql-Server mysql_select_db($dbase); // Wählt die Datenbank $dbase aus $Benutzername = mysql_real_escape_string($HTTP_GET_VARS['benutzername']); // In der Variable steht der String der in der Url nach "benutzername=" übermittelt wurde $Passwort = mysql_real_escape_string($HTTP_GET_VARS['passwort']); // In der Variable steht der String der in der Url nach "passwort=" übermittelt wurde $result = mysql_query("SELECT * FROM User_Daten WHERE Benutzername='" . $Benutzername . "'"); // Sendet die Anfrage an die MySql-DB: "Wähle alle Daten aus der Tabelle User_Daten wo der Benutzername gleich $Benutzername ist" // !!! Achtung !!! - Habt ihr vorher den Namen der Tabelle verändert müsst ihr logischerweise auch den neuen Namen verwenden $row = mysql_fetch_row($result); // mysql_fetch_row($result) gibt ein Array zurück mit allen Daten aus der Spalte in der der Benutzername gleich $Benutzername ist if ($row) // Wenn ein Datensatz gefunden wurde { // ... Benutzername ist also schonmal vorhanden in der DB if ($Passwort == $row[1]) // Wenn das übermittelte Passwort in MD5 mit dem Passwort aus der DB übereinstimmt { // Passwort stimmt echo 1; // Gib eine 1 aus } else // Ansonsten { // Passwort stimmt nicht echo 2; // Gib eine 2 aus } } else // Ansonsten { // Benutzername nicht vorhanden echo 0; // Gib eine 0 aus } // PHP-Code Ende ?>
Hab ich so geändert dass das Passwort nicht mehr verschlüsselt ist...
Mein AutoIt-Script:
[autoit]#include <Inet.au3>
[/autoit][autoit][/autoit][autoit]_Login("Hallo","Hallo")
[/autoit][autoit][/autoit][autoit]
; Ein Loginbeispiel zum Testen:
; Benutername: Test
; Passwort: HalloFunc _Login($sBenutzername = "", $sPasswort = "")
[/autoit][autoit][/autoit][autoit]
;$iRValue = _INetGetSource("http://123.bplaced.net/DB/login.php?benutzername=" & $sBenutzername & "&passwort=" & $sPasswort)
$iRValue = _INetGetSource("http://123.bplaced.net/DB/login.php?benutzername=Test&passwort=testtest")
MsgBox(1,"",$iRValue)
; Statt <URL> tragt ihr hier bitte die URL zur login.php-Datei auf dem Webspace ein
; Öffnet die Seite und führt dabei die login.php-Datei aus. Die php-Datei arbeitet nun ihren Code ab und gibt entweder ...
; 0 - Benutzername stimmt nicht (nicht vorhanden) oder ...
; 1 - Passwort und Benutzername stimmt oder ...
; 2 - Passwort stimmt nicht
; ... ausSwitch $iRValue ; je nach Rückgabewert der login.php-Datei wird nun weiter verfahren:
[/autoit]
Case 0 ; - Benutzername stimmt nicht (nicht vorhanden)
MsgBox(16,"Error","Benutzername ist nicht registriert!")
Case 1 ; - Passwort und Benutzername stimmt
MsgBox(32,"Info","Erfolgreich eingeloggt!")
Case 2 ; - Passwort stimmt nicht
MsgBox(16,"Error","Passwort ist falsch!")
EndSwitch
EndFunc ;==>_LoginWenn ich den Link im Browser aufrufe passt alles, dann bekomme ich einen Rückgabewert. Aber wenn ich es über das AutoIt-Script probiere bekomme ich keinen Rückgabewert...
Kann mir jemand helfen?
Edit: Problem gelöst dank Seubo
HttpSetUserAgent() -
Hi.
Mein problem ist die 1 bzw. 0 bei der login.php.
Egal was ich manuell eingebe es kommt immer eine null...login.php
PHP
Alles anzeigen<?php // PHP-Code Beginn require_once('db_config.php'); // Die Datenbankverbindungsdaten einbinden, damit die Funktion "mysql_connect" funktioniert mysql_connect($host, $user, $pass); // Öffnet eine Verbindung zu dem MySql-Server mysql_select_db($dbase); // Wählt die Datenbank $dbase aus $Benutzername = mysql_real_escape_string($HTTP_GET_VARS['benutzername']); // In der Variable steht der String der in der Url nach "benutzername=" übermittelt wurde $Passwort = mysql_real_escape_string($HTTP_GET_VARS['passwort']); // In der Variable steht der String der in der Url nach "passwort=" übermittelt wurde $result = mysql_query("SELECT * FROM User_Daten WHERE Benutzername='" . $Benutzername . "'"); // Sendet die Anfrage an die MySql-DB: "Wähle alle Daten aus der Tabelle User_Daten wo der Benutzername gleich $Benutzername ist" // !!! Achtung !!! - Habt ihr vorher den Namen der Tabelle verändert müsst ihr logischerweise auch den neuen Namen verwenden $row = mysql_fetch_row($result); // mysql_fetch_row($result) gibt ein Array zurück mit allen Daten aus der Spalte in der der Benutzername gleich $Benutzername ist if ($row) // Wenn ein Datensatz gefunden wurde { // ... Benutzername ist also schonmal vorhanden in der DB $Dbmd5Passwort = $row[1]; // Die Variable $Dbmd5Passwort enthält nun das Passwort als MD5-String // mysql_fetch_row in Zeile 34 hatte ein Array zurück gegeben, deshalb $row[1] // In der DB ist die Passwortspalte die zweite Spalte von oben - somit $row[1] ( die Spalten sind von 0 ab nummeriert) if (md5($Passwort) == $Dbmd5Passwort) // Wenn das übermittelte Passwort in MD5 mit dem Passwort aus der DB übereinstimmt { // Passwort stimmt echo 1; // Gib eine 1 aus } else // Ansonsten { // Passwort stimmt nicht echo 2; // Gib eine 2 aus } } else // Ansonsten { // Benutzername nicht vorhanden echo 0; // Gib eine 0 aus } // PHP-Code Ende ?>
Ich habe einen rootserver und glaube das dort nichts gesperrt ist. Das registrieren funktioniert auch, aber das programm generiert nur den user "" und das pw ""...
Bitte um hilfe
-
HI ich weiss das tut ist schon einbisschen älter, aber wie und wo muss ich die Autoit dateien speichern?
-