Registrierung mit MYSQL

Fragen zum Thema HTML, JavaScript, PHP
Antworten
BeginnerBobo
Beiträge: 30
Registriert: Di Mär 18, 2014 6:46 pm

Registrierung mit MYSQL

Beitrag von BeginnerBobo » Mo Mär 31, 2014 8:36 am

Hey Leute ich bins dann mal wieder :)

nachdem das mit css und html schon einigermaßen funktioniert muss ich natürlich noch php dazu nehmen damit ich wieder durcheinander komme :P wollte aber eine register/login funktion einbauen. Das mit dem An-und Abmelden hatte ich auch einwandfrei hinbekommen. Da sah der Code in der index.php so aus:

Code: Alles auswählen

<?php
session_start();
$verhalten = 0;

if(!isset($_SESSION["username"]) and  !isset($_GET["page"])) {
$verhalten = 0;
}
if ($_GET["page"] == "log") {

$user = $_POST["user"];
$password = $_POST["password"];

if ($user == "admin" and $password == "test333") {
$_SESSION["username"] = $user;
$verhalten = 1;
} else	{
$verhalten = 2;
}
}
?>
<!DOCTYPE html>
<html>
<head>
	<title>Login</title>
	<?php
	if($verhalten == 1) {
	?>
		<meta http-equiv="refresh" content="2; URL=index2.php" />
	<?php
	}
	?>
</head>
<body>
	<?php
	if ($verhalten == 0) {
	?>
	Login:<br />
		<form method="post" action="index.php?page=log">
		Benutzername:<input type="text" name="user" />
		Passwort:<input type="password" name="password" />
		<input type="submit" value="Einloggen" />
		</form>
	<p><a href="register.php">Jetzt registrieren!</a></p>
	<?php
	}
	if($verhalten == 1) {
	?>
	Erfolgreich eingeloggt. Du wirst nun weitergeleitet...
	<?php
	}
	?>
	<?php
		if($verhalten == 2) {
	?>
	Username oder Passwort sind falsch. Bitte versuche es erneut. <a href="index.php">Erneut versuchen</a>
	<?php
	}
	?>
</body>
</html>
Allerdings hatte ich da ja nur einen in der index.php festgelegten benutzer. man soll sich ja aber registrieren können. mein MYSQL server läuft über bplaced.net. habe also nen tutorial nachgebaut und die index.php so umgebaut:

Code: Alles auswählen

<?php
session_start();
$verhalten = 0;

if(!isset($_SESSION["username"]) and  !isset($_GET["page"])) {
$verhalten = 0;
}
if ($_GET["page"] == "log") {
$user = strtolower($_POST["user"]);
$password = md5($_POST["password"]);		
			$verbindung = mysql_connect("localhost", "beginnerbobo", "password")
			or die ("Fehler im System");
			
			mysql_select_db("bobshop")
			or die ("Verbindung zur Datenbank zurzeit nicht möglich...");
			
			$control = 0;
			$abfrage = "SELECT * FROM login WHERE user ='$user' AND password '$password'";
			$ergebnis = mysql_query($abfrage);
			while($row = mysql_fetch_object($ergebnis))
			{
			$control++;
			}
if ($control != 0)	{
$_SESSION["username"] = $user;
$verhalten = 1;
} else	{
$verhalten = 2;
}
}
?>
<!DOCTYPE html>
und eine register.php erstellt mit dem inhalt:

Code: Alles auswählen

<!DOCTYPE html>
<html>
<head>
		<title>Registrierung</title>
</head>
<body>
<h3>Registrierung:</h3>
<?php
if (!isset($_GET["page"])) {
?>
		<form method="post" action="register.php?page=2">
		Benutzername: <input type="text" name="user" /> <br />
		Passwort: <input type="password" name="pw" /> <br />
		Passwort wiederholen: <input type="password" name="pw2" /> <br />
		<input type="submit" value="Registrieren" />
		</form>
<?php
}
?>
<?php
if(isset($_GET["page"]))	{
	if($_GET["page"])	{
	$user = strtolower($_POST["user"]);
	$pw = md5 ($_POST["pw"]);
	$pw2 = md5 ($_POST["pw2"]);
	if($pw != $pw2)	{
		echo "Deine eingegebenen Passwörter stimmen nicht überein. <a href=\"register.php\">Erneut versuchen</a>";
	} else {
			$verbindung = mysql_connect("localhost", "beginnerbobo", "password")
			or die ("Fehler im System");
			
			mysql_select_db("bobshop")
			or die ("Verbindung zur Datenbank zurzeit nicht möglich...");
			
			$control = 0;
			$abfrage = "SELECT user FROM login WHERE user = '$user'";
			$ergebnis = mysql_query($abfrage);
			while($row = mysql_fetch_object($ergebnis))
				{
				$control++;
				}
			if($control != 0)	{
			echo "Der eingegebene Benutzername ist bereits vergeben. <a href=\"register.php\">Erneut versuchen</a>";
			} else {
			$eintrag = "INSERT INTO login
			(user, password)
			
			VALUES
			('$user', '$pw')";
			
			$eintragen = mysql_query($eintrag);
			if($eintragen == true)	{
				echo "Du hast dich erfolgreich registriert.<a href=\"index.php\">Jetzt einloggen</a>";
			} else {
				echo "Fehler im System. Bitte versuche es später erneut...";
			}
			mysql_close($verbindung);
			}
	}
	}
}
?>
</body>
</html>
wenn ich mich nun registrieren will kriege ich allerdings die nachricht: "Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /users/bobshop/www/Carblog2014/index.php on line 24
Username oder Passwort sind falsch. Bitte versuche es erneut. Erneut versuchen"..

ich habe ein bisschen gegoogelt und ich vermute da stimmt was mit meinem mysql nicht? bzw zeigt er mir einen fehler in dieser zeile der register.php an:
" while($row = mysql_fetch_object($ergebnis))"

Ich hoffe ich konnte mein problem einigermaßen verständlich schildern und noch mehr hoffe ich auf hilfe. schon mal ein großes dankeschön und bis denne

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Registrierung mit MYSQL

Beitrag von Xin » Mo Mär 31, 2014 9:51 am

Ohne das ganze Mal komplett nachzuvollziehen die blöde Frage... welches Objekt möchtest Du denn eigentlich fetchen, nachdem Du Insert aufgerufen hast?

Wenn Du ein lokales MySQL nutzt, installiere Dir doch phpMyAdmin oder nutze den mysql-Client. Dort kannst Du dann sehen, ob der User erfolgreich eingetragen wurde. Im PHP-Skript siehst Du das doch über die Variable $ergebnis.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

BeginnerBobo
Beiträge: 30
Registriert: Di Mär 18, 2014 6:46 pm

Re: Registrierung mit MYSQL

Beitrag von BeginnerBobo » Mo Mär 31, 2014 9:54 am

:/ wie gesagt bin mit php noch bisschen überfordert und habe die registrierung nun nur anhand von einem tutorial nachgebaut ohne alles zu verstehen. ich weiß zum beispiel gar nicht wofür dieses "while($row = mysql_fetch_object($ergebnis))" überhaupt benötigt wird. bei bplaced.net habe ich so ein menü namens phpMyAdmin ja aber da ist bisher nur mein hauptbenutzer registriert und sonst nichts. habe in der hinsicht halt echt noch gar keine erfahrung.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Registrierung mit MYSQL

Beitrag von Xin » Mo Mär 31, 2014 11:29 am

BeginnerBobo hat geschrieben::/ wie gesagt bin mit php noch bisschen überfordert und habe die Registrierung nun nur anhand von einem Tutorial nachgebaut ohne alles zu verstehen.
Dann solltest Du das Tutorial vielleicht auch lesen, bzw. Dir eins mit Erklärungen suchen :-D
BeginnerBobo hat geschrieben:ich weiß zum Beispiel gar nicht wofür dieses "while($row = mysql_fetch_object($ergebnis))" überhaupt benötigt wird.
Solange Deine Anfrage noch Zeilen als Antwort zurückliefest, hole ein Objekt. Wobei ich hier mysql_fetch_row($ergebnis) glaube ich richtige empfinden würde.
BeginnerBobo hat geschrieben:bei bplaced.net habe ich so ein Menü namens phpMyAdmin ja aber da ist bisher nur mein hauptbenutzer registriert und sonst nichts. habe in der hinsicht halt echt noch gar keine Erfahrung.
Daran ändern wir auch nix, sonst müssten wir ja irgendwann Deinen User-Namen ändern ;-)

Nein... das ganze ist alles halb so wild, am Anfang steht man halt immer wie ein Ochs vor'm Berg.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Registrierung mit MYSQL

Beitrag von cloidnerux » Mo Mär 31, 2014 11:31 am

ich weiß zum beispiel gar nicht wofür dieses "while($row = mysql_fetch_object($ergebnis))" überhaupt benötigt wird
Erstmal rein logisch:

Code: Alles auswählen

"while($row = mysql_fetch_object($ergebnis))
Du hast eine while-schleife, die wiederholt sich so lange wie die Bedingung in der Klammer wahr ist(>0). Die Zuweisung in einer Bedingung ist erlaubt, geprüft wird dann ob das Element größer 0 ist. Die variable $row wird größer 0 sein, solange mysql_fetch_object irgendetwas sinnvolles zurück gibt. Aus dem Namen dieser Funktion kann man erschließen, dass es aus dem Ergebniss der MySQL Anfrage ein Objekt auswählen wird.
Insgesamt scheint dieses Konstrukt solange Objekte aus dem Ergebnis der MySQL Anfrage in die Variable $row schreiben, bis nichts mehr vorhanden ist.

Nun kann man auch die Fehlermeldung in dem Kontext Interpretieren:

Code: Alles auswählen

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result
Es wird irgendein Ergebnis einer MySQL Query erwartet, das kommt aber nicht. Was wird aber stattdessen übergeben?
Nun kann es mehre Fälle geben: Die MySQL Query gab einen Fehler zurück, weil irgendwas nicht stimmt.
Schaut man sich die Beschreibung der Funktion "mysql_query" an: http://www.php.net/manual/de/function.mysql-query.php
sieht man, dass im Fehlerfall "false" zurück gegben wird.
Nun kannst du einfach mit einem if überprüfen, ob dem so ist:

Code: Alles auswählen

$abfrage = "SELECT user FROM login WHERE user = '$user'";
$ergebnis = mysql_query($abfrage);
if($ergebnis == false)
    die "Fehler beim Auslesen der Datenbank!";
while($row = mysql_fetch_object($ergebnis))
[...]
Redundanz macht wiederholen unnötig.
quod erat expectandum

BeginnerBobo
Beiträge: 30
Registriert: Di Mär 18, 2014 6:46 pm

Re: Registrierung mit MYSQL

Beitrag von BeginnerBobo » Mo Mär 31, 2014 8:47 pm

Oh je stehe gerade echt doof da. Bisher lief es echt recht simpel mit css und html aber des php is schon recht knifflig am Anfang. Ich glaube langsam ich komme noch drumherum php von Anfang an zu lernen um so eine register Funktion alleine ohne tutorial zu programmieren oder? Dann muss die register Funktion vielleicht noch bisschen warten :o

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Registrierung mit MYSQL

Beitrag von cloidnerux » Mo Mär 31, 2014 8:58 pm

Oh je stehe gerade echt doof da. Bisher lief es echt recht simpel mit css und html aber des php is schon recht knifflig am Anfang.
Jeder Anfang ist schwer, aber lass dich nicht entmutigen. Vor allem im Webbereich empfiehlt es sich, zu verstehen was man macht. Wenn du natürlich vorher noch nie programmiert hast, wird es natürlich schwer die Konzepte sofort zu verstehen.
Ich glaube langsam ich komme noch drumherum php von Anfang an zu lernen um so eine register Funktion alleine ohne tutorial zu programmieren oder? Dann muss die register Funktion vielleicht noch bisschen warten :o
Du könntest dich ja mal umschauen, ob eins der bekannteren CMS Systeme(Joomla, Typo3, etc) bieten was du suchst.
Redundanz macht wiederholen unnötig.
quod erat expectandum

BeginnerBobo
Beiträge: 30
Registriert: Di Mär 18, 2014 6:46 pm

Re: Registrierung mit MYSQL

Beitrag von BeginnerBobo » Mo Mär 31, 2014 9:15 pm

Vielen Dank auf jeden Fall für die sehr freundliche Art. Nein ich versuche mich nicht entmutigen zu lassen. Ich bin auch keiner der denkt, ich programmiere jetzt mal in paar Wochen ne Seite. Das soll nen Langzeit Hobby sein aber es ist auch immer schön wenn man Ergebnisse sieht. Naja ich versuche mal die nötigsten Sprachen zu lernen und dann mein Problem selbst zu lösen. Habt ihr Vorschläge oder Empfehlungen wo ich nun gut php lerne? Sonst Google ich mich morgen selbst durchs Netz :) vielen Dank auf jeden Fall und ihr hört sicher nochmal von mir. Lg

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Registrierung mit MYSQL

Beitrag von Xin » Mo Mär 31, 2014 9:54 pm

BeginnerBobo hat geschrieben:Ich bin auch keiner der denkt, ich programmiere jetzt mal in paar Wochen ne Seite. Das soll nen Langzeit Hobby sein
Das ist eine realistische Herangehensweise.
BeginnerBobo hat geschrieben:Habt ihr Vorschläge oder Empfehlungen wo ich nun gut php lerne? Sonst Google ich mich morgen selbst durchs Netz :) vielen Dank auf jeden Fall und ihr hört sicher nochmal von mir. Lg
Wir haben hier ein PHP-Tutorial von einem User. Es ist aber noch nicht korrekturgelesen.

Es besteht die Möglichkeit, dies zu lesen und zu kritisieren, so dass hier Druck entsteht, das zu tun (was ich dann tun darf ^^).
Eine andere Alternative kann ich Dir nicht sagen, ich habe einige PHP-Bücher, bin allerdings kein PHP-Fan. Entsprechend kann ich hier keine Empfehlung geben.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

C@mper
Beiträge: 88
Registriert: Mo Nov 15, 2010 3:30 pm

Re: Registrierung mit MYSQL

Beitrag von C@mper » Di Apr 01, 2014 7:55 am

Das PHP Tutorial hier im WIKI ist ganz ordenlich und gut verständlich. Leider fehlt hier noch die Anbindung an MySql.

Eine sehr gute Beschreibung für PHP Einsteiger bietet u.a. http://www.php-kurs.info/ hier auch mit Verbindung zu MySql.
Wenn Du Dich mit PHP / MySql auseinandersetzt, kann ich immer wieder nur empfehlen, sich auch gleich auf das Thema SQL Injection zu stürzen. Dieses Thema ist ein MUSS.

Und zum Nachschlagen natürlich immer wieder http://www.php.net

Antworten