PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formular auswerten


BeneBaur
24.03.2003, 18:39:28
Hallo,

ich hoffe das ihr mir helfen könnt, ich habe folgendes Problem:

Ich habe ein Anmeldeformular gebaut, dieses soll nun über eine DB gucken ob das Passwort und der Benutzername richtig ist, wenn ja dann soll eine seite geöffnet werden wenn nicht ne andere!

Ich hoffe ihr habt meine Frage verstanden, und könnt mir helfen!

|Coding
24.03.2003, 18:42:17
also ne frage ist es ja eigentlich nicht ;-)

wo genau weist du denn nicht weiter?

BeneBaur
24.03.2003, 18:44:33
Ja da hast du recht!!...

ich weiß nicht wie ich die kommunikaton zwischen PHP und DB hingekomme.

Kannst du mir da helfen?

Ben20
24.03.2003, 19:12:10
Mit DB Server verbinden: mysql_connect()
Datenbank auswählen: mysql_select_db()
Anfragen senden: mysql_query()

http://www.selfphp.com/funktionsreferenz/mysql_funktionen/index.php

SQL Syntax:

Daten auslesen: SELECT xyz FROM tabelle
Daten schreiben: INSERT INTO tabelle VALUES('fd', 'fd', 'fds')
Daten löschen: DELETE FROM tabelle WHERE feld = 'wert'
Daten ändern: UPDATE tabelle SET feld = 'neuerWert'

http://www.mysql.de/documentation/mysql/bychapter/index.html


Gutes Buch:
MySQL von Michael Koffler http://www.kofler.cc

|Coding
24.03.2003, 19:19:19
eine einfache möglichkeit es zulösen:


<?
$db_serv = 'localhost';
$db_name = 'datenbank';
$db_user = 'root';
$db_pass = 'mega';
$die = 'Es liegen technische Probleme vor. Wir bitten um Ihr Verständnis.';
$db = @mysql_connect($db_serv, $db_user, $db_pass) or die($die);
@mysql_select_db($db_name, $db) or die($die);

if(isset($_POST['login'])){
$result = @mysql_query("SELECT pw, user FROM tabelle WHERE name = '".$_POST['name']."'") or die($die);
$login = @mysql_fetch_row($result) or die($die);
if($login[0] == $_POST['pass'] && $login[1] == $_POST['name']) header("location: http://www.wenn-login-erfolgreich.de/");
else header("location: http://www.wenn-login-nicht-erfolgreich.de/");
}else{
//login form
?>
<form action="<?= $_SERVER['PHP_SELF']; ?>" method="post">
Name: <input type="text" name="name" value="">
Passwort: <input type="password" name="pass" value="">
<input type="submit" name="login" value="Login!">
</form>
<? } ?>

BeneBaur
25.03.2003, 20:13:13
Ich habe das jetzt folgendermaßen geschrieben!

<html>
<head>
<title>Kunden Bereich</title>
</head>
<body>

<?
$db_serv = 'localhost';
$db_name = 'LogIn';
$db_user = 'benebdbr';
$db_pass = '01121987';
$die = 'Es liegen technische Probleme vor. Wir bitten um Ihr Verständnis.';
$db = @mysql_connect($db_serv, $db_user, $db_pass) or die($die);
@mysql_select_db($db_name, $db) or die($die);

if(isset($_POST['name'])){
$result = @mysql_query("SELECT pw, user FROM tabelle WHERE name = '".$_POST['name']."'") or die($die);
$login = @mysql_fetch_row($result) or die($die);
if($login[0] == $_POST['passwort'] && $login[1] == $_POST['name'])
{
echo "Ihr Passwort ist richtig";
}

//header("location: http://www.wenn-login-erfolgreich.de/");
else
{
echo "falsch"
}

//header("location: http://www.wenn-login-nicht-erfolgreich.de/");
}else{
//login form
?>
<form action="<?= $_SERVER['PHP_SELF']; ?>" method="post">
Name: <input type="text" name="name" value="">
Passwort: <input type="password" name="pass" value="">
<input type="submit" name="login" value="Login!">
</form>
<? } ?>

</body>
</html>

|Coding
25.03.2003, 20:17:43
hast du auch diese zeile an deine datenbank angepasst:


$result = @mysql_query("SELECT pw, user FROM tabelle WHERE name = '".$_POST['name']."'") or die($die);

BeneBaur
25.03.2003, 20:43:35
<?
$db_serv = 'localhost';
$db_name = 'usrdb_benebdbr';
$db_user = 'xxx';
$db_pass = 'xxx';
$die = 'Es liegen technische Probleme vor. Wir bitten um Ihr Verständnis.';
$db = @mysql_connect($db_serv, $db_user, $db_pass) or die($die);
@mysql_select_db($db_name, $db) or die($die);

if(isset($_POST['login'])){
$result = @mysql_query("SELECT passwort, name FROM LogIn WHERE name = '".$_POST['name']."'") or die($die);
$login = @mysql_fetch_row($result) or die($die);
if($login[0] == $_POST['pass'] && $login[1] == $_POST['name'])
{
echo "Hallo";
}
else
{
echo "falsch"
}

?>

Habe es nun so geschrieben es kommt zwar kein Fehler, sondern nur eine weiße Seite und unten steht fertig in der Statusleite!
Woran liegt das denn blos?

Bitte helft mir nocheinmal!

Bene

ps: wie geht das das man die Scripte so wie du in dises Forum postet?

|Coding
25.03.2003, 20:49:16
die scripte kann man so mit vbcodes posten. hier hast du eine übersicht, der vbcodes: click (http://www.selfphp.info/forum/forum/misc.php?s=&action=bbcode)

zum problem:

schreib mal an den anfang des scripts

error_reporting(E_ALL);


und führe es noch mal aus. vielleicht wird der fehler dann ersichtlich.

BeneBaur
27.03.2003, 10:37:05
Hi,

ich weiß nicht was hier los ist aber das bringt alles nichts, alles was ich ausprobiert habe nützt nichts, dein Tipp bewirkt auch nichts.

Ich habe das Script jetzt so geschrieben, kannst du dir es nochmal angucken und mir sagen ob daran irgentwas falsch ist.
was sagt eigentlich die Variable $_POST? Hast du das nur so geschrieben oder muss ich die auch anpassen, wenn ja wofür steht sie?

Also hier der Code:


<?
error_reporting(E_ALL);
$db_serv = 'localhost';
$db_name = 'usrdb_benebdbr';
$db_user = 'benebdbr';
$db_pass = 'iabrae78 ';
$die = 'Es liegen technische Probleme vor. Wir bitten um Ihr Verständnis.';
$db = @mysql_connect($db_serv, $db_user, $db_pass) or die($die);
@mysql_select_db($db_name, $db) or die($die);

if(isset($_POST['login'])){
$result = @mysql_query("SELECT passwort, name FROM LogIn WHERE name = '".$_POST['name']."'") or die($die);
$login = @mysql_fetch_row($result) or die($die);
if($login[0] == $_POST['pass'] && $login[1] == $_POST['name'])
{
echo "Hallo";
}
else
{
echo "falsch";
}
}
?>


Ich hofe du hilfst mir nochmal!

Yzerman
27.03.2003, 15:14:30
Ich dränge mich mal dazwischen.
Hier mal kurz ein Beispiel, wie man ein einfaches Login realisieren kann:
Du hast eine Tabelle "user" mit den Feldern "name" und "pass".
Ein User will sich nun anmelden über ein Formular mit den Eingabefeldern "name" und "pass", die per POST übergeben werden.
Dann kannst Du folgendermaßen abfragen, ob der Login OK ist:

$logged_in = FALSE;
$query = MYSQL_QUERY ("SELECT `pass` FROM `user` WHERE `name`=' ".$_POST['name']." ' ",$dbconnection);
if ($result = MYSQL_FETCH_ARRAY ($query) {
if ($result['pass'] == $_POST['pass']) {
$logged_in = TRUE; } }
if ($logged_in) {
echo "Logged in."; }
else {
echo "Login failed."; }

BeneBaur
27.03.2003, 17:46:10
Hallo Yzerman,

vielen Dank dass du mir helfen konntest, das klappt aber noch nicht, es kommt folgende fehlermeldung, ich denke das der Ort der DB angegeben werden muss.

Fehlermeldung:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /benebdbr/www.benebaur.de/Webdesign/Broedleservice/Kundenbereich/test2.php on line 3

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /benebdbr/www.benebaur.de/Webdesign/Broedleservice/Kundenbereich/test2.php on line 5
Login failed.

Dago
27.03.2003, 17:56:03
Korrekt.
Man nehme 2 Esslöffel mysql_connect() (http://de.php.net/mysql_connect) und runde es mit 5 Gramm mysql_select_db() (http://de.php.net/mysql_select_db) ab.
Das ganze kräftig rühren und fertig ist die Datenbankverbindung.

BeneBaur
27.03.2003, 18:02:55
Danke für dein Post, ich bin allerdings in sachen PHP und MySQL ein NewsBy, köntest du das ganze nochmal etwas erläutern?

Danke,

Dago
27.03.2003, 18:06:24
Also, du schreibst vor allen anderen MySQL-Befehlen, diese beiden:


mysql_connect('IP_oder_Hostname_des_MySQL-Servers','Username','Passwort'); //Zum Server connecten!

mysql_select_db('Name_deiner_Datenbank') //Datenbank aufrufen!

BeneBaur
27.03.2003, 18:15:39
Es tut mir ja leit aber das funzt immer noch nicht, was ist das denn, ich bin so langsam am ende!

Manno

Helft mir doch mal bitte!

Dago
27.03.2003, 18:24:01
Lass mal $dbconnection aus mysql_query raus oder setze
"$dbconnection =" vor mysql_connect().

BeneBaur
27.03.2003, 18:36:59
jetzt klappt es schon fast, es gibt nur noch ein prob, egal was ich eingebe es kommt immer Log In failed!!!
Was kann denn das jetzt sein verdammt nochmal????

Dago
27.03.2003, 18:44:58
Dann setz doch mal irgendwo am Ende des Skripts ein
echo $result['pass'],
um zu sehen, was MySQL da überhaupt ausgibt...

BeneBaur
27.03.2003, 18:53:09
Hallo Dago,

das kann doch alles nicht so schwer sein so ne kommunikation zwischen PHP und MySQL herzustellen oder nich?!

Hier nochmal das Script, gucke es dir doch bitte nochmal an, denn ich bin wirklich am ande mit meinen Kentnissen.


<?
$dbconnection = mysql_connect('localhost','benebdbr','iabrae78'); //Zum Server connecten!

mysql_select_db('usrdb_benebdbr'); //Datenbank aufrufen!
$logged_in = FALSE;
$query = MYSQL_QUERY ("SELECT `pass` FROM `user` WHERE `name`=' ".$_POST['name']." ' ",$dbconnection);

if ($result = MYSQL_FETCH_ARRAY ($query))
{
if ($result['pass'] == $_POST['name'])
{

$logged_in = TRUE;
}
}

if ($logged_in) {
echo "Logged in."; }
else
{
echo "LogIn failed";
}
echo $result['pass'];
?>

BeneBaur
27.03.2003, 19:05:58
Original geschrieben von BeneBaur
Hallo Dago,

das kann doch alles nicht so schwer sein so ne kommunikation zwischen PHP und MySQL herzustellen oder nich?!

Hier nochmal das Script, gucke es dir doch bitte nochmal an, denn ich bin wirklich am ande mit meinen Kentnissen.


<?
$dbconnection = mysql_connect('localhost','benebdbr','iabrae78'); //Zum Server connecten!

mysql_select_db('usrdb_benebdbr'); //Datenbank aufrufen!
$logged_in = FALSE;
$query = MYSQL_QUERY ("SELECT `pass` FROM `user` WHERE `name`=' ".$_POST['name']." ' ",$dbconnection);

if ($result = MYSQL_FETCH_ARRAY ($query))
{
if ($result['pass'] == $_POST['name'])
{

$logged_in = TRUE;
}
}

if ($logged_in) {
echo "Logged in."; }
else
{
echo "LogIn failed";
}
echo $result['pass'];
?>

Bitte helft mir noch einmal!!!

Dago
27.03.2003, 19:07:55
Hm.. du vergleichst da Passwort mit Username...
$result['pass'] == $_POST['name'])
Na, klingelts? ;)

BeneBaur
27.03.2003, 19:13:56
klar aber wenn ich:

if ($result['name'] == $_POST['name'])

mache gehts auch nicht, ich weiß langsam nicht mehr was ich in den Code schreiben soll damit das funzt.

Dago
27.03.2003, 19:17:50
Sorry aber, LOL :D
Nicht böse gemeint...

Was willst du denn vergleichen??
Den Usernamen aus dem Formular mit dem Usernamen aus der Datenbank oder das PASSWORT!?! mit demselben aus der DB?

Dann muss es natürlich heißen:
if ($result['pass'] == $_POST['pass'])

Oder was du sonst für dein Formular-Passwort für einen Namen hast... (den natürlich nur bei der $_POST-Variable ändern!)

BeneBaur
27.03.2003, 20:27:31
Ja o.k da hast du natürlich rcht aber so:


<?
$dbconnection = mysql_connect('localhost','benebdbr','iabrae78'); //Zum Server connecten!

mysql_select_db('usrdb_benebdbr'); //Datenbank aufrufen!
$logged_in = FALSE;
$query = MYSQL_QUERY ("SELECT `pass` FROM `user` WHERE `name`=' ".$_POST['name']." ' ",$dbconnection);

if ($result = MYSQL_FETCH_ARRAY ($query))
{
if ($result['pass'] == $_POST['pass'])
{

$logged_in = TRUE;
}
}

if ($logged_in) {
echo "Logged in."; }
else
{
echo "LogIn failed";
}
echo $result['pass'];
?>


geht es auch ned!

Hast du noch ne Idee?

Dago
27.03.2003, 20:33:28
Ich gebs auf O_o

Es ist echt schwer ne Ferndiagnose ohne irgendwelchen Input außer "hast du noch ne Idee" zu machen... Hast du überhaupt die Datenbank/Tabelle richtig eingerichtet?