| 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! |
 |
|

05-01-2012, 02:35
|
|
Steinchen87
Registrierter Benutzer
|
|
Registriert seit: Jan 2012
Beiträge: 11
|
|
Login Problem
Servus,
ich bin noch relativ neu im Umgang mit PHP und habe ein Problem mit dem folgenden Skript.
Vorweg möchte ich sagen das ich in phpmyadmin eine Datenbank erstellt in die sich bereits über 2 andere Skripte meine Nutzer registrieren könnten.
Aufbau:
db Name: buchungsliste
db Tabelle: daten
# Spalte
1. ..........
2. .........
3. .........
4.............
5.benutzer
6..............
7...............
8................
9.................
10...............
11...........
12.Passwort
Jetzt wollte ich eig noch einen login dazu gestalten, damit sich halt direkt einloggen kann, wenn man schon registriert ist.
s.h. folgende Skripte
1. Skript: pw_eingabe scheint zu funktionieren...
PHP-Code:
<?php session_start();
/*
* Benutzer- und Passworteingabe
* BA - pw_eingabe.php
*/
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
<title>Login</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h2>Login</h2>
<form action="pw_kontrolle.php" target="_self" method="post">
<table>
<?php
if ( isset( $_SESSION['pw_mitteilung'] ) ) {
// Es ist ein Passwort-Fehler aufgetreten
echo '
<tr><td colspan="2" style="color:red">'.$_SESSION['pw_mitteilung'].'</td></tr>';
unset( $_SESSION['pw_mitteilung'] );
}
?>
<tr>
<td><strong>benutzer</strong></td>
<td><input name="benutzer" size="30" type="text"
</td>
</tr>
<tr>
<td><strong>Passwort</strong></td>
<td><input name="passwort" size="30" type="password" /></td>
</tr>
<tr><td colspan="2"> </td></tr>
<tr>
<td colspan="2" align="right">
<input name="absenden" value="Absenden" type="submit" />
</td>
</tr>
</table>
</form>
</body>
</html>
2. Skript pw_kontrolle funktioniert nicht!!!!
Angezeigt wird diese zeile $result= mysql_query.....
könnte es vllt an der Bez. zu der darüberliegen Zeile liegen?
Um Hilfe wär ich sehr dankbar, bin schon am verzweifeln...
<?php session_start();
PHP-Code:
// Den Benutzer permanent speichern
$_SESSION['benutzer'] = $_POST['benutzer'];
include( 'db_abfrage.inc.php' );
$sql = 'SELECT * FROM daten WHERE benutzer=\''.$_SESSION['benutzer'].'\'';
$result = mysql_query( 'buchungsliste', $sql );
#echo 'Zeile 15 - $result='.( $result === FALSE ? 'FALSE' : 'Ergebnis' );exit();
if ( mysql_num_rows( $result ) == 0 ) {
// Für die Bedingung SELECT * FROM daten WHERE benutzer='benutzer'
// wurde kein Eintrag gefunden, d.h. Benutzer ist in der Datenbank nicht vorhanden
$_SESSION['pw_mitteilung'] = 'Der Benutzer <strong>'.$_SESSION['benutzer']
.'</strong> ist nicht bekannt.';
header( 'Location: pw_unbek_benutzer.php' );
exit();
}
$nutzer = mysql_fetch_array( $result );
if ( $nutzer['passwort'] != md5( $_POST['passwort'] ) ) {
// Das eingegebene Passwort stimmt nicht mit dem gespeicherten überein
$_SESSION['pw_mitteilung'] = 'Das Passwort zum Benutzer '.$_SESSION['benutzer']
.' ist falsch.';
header( 'Location: pw_eingabe.php' );
exit();
}
$_SESSION['login_iO'] = TRUE;
// weiter im normalen Ablauf
echo 'Alles i.O.<br />'
.'Nutzer = '.$_SESSION['benutzer'].'<br />'
.'Passwort = '.$_POST['passwort'].'<br />'
.'md5_PW = '.md5( $_POST['passwort'] ).'<hr />';
?>
|

05-01-2012, 08:50
|
|
ddel
Registrierter Benutzer
|
|
Registriert seit: Jan 2012
Beiträge: 9
|
|
Hi Steinchen87
Da hat sich ganz ein kleiner Fehler eingeschlichen!
Und zwar in folgender Zeile:
PHP-Code:
$sql = 'SELECT * FROM daten WHERE benutzer=\''.$_SESSION['benutzer'].'\'';
Du hast ein Anführungszeichen zu viel drinn. Darum denkt der PHP Intepreter dass es sich bei der nächsten Zeile auch noch um einen String handelt und gibt diesen aus.
Du könntest die Sache auch so schreiben:
PHP-Code:
$sql = "SELECT * FROM daten WHERE benutzer='".$_SESSION['benutzer']."'";
Ich gehe davon aus, dass der Benutzer bei dir ganz normal abgelegt ist und nicht mit Sonderzeichen davor und dahinter?
Gruss
Geändert von ddel (05-01-2012 um 08:53 Uhr)
|

05-01-2012, 08:56
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
PHP-Code:
// Den Benutzer permanent speichern
$_SESSION['benutzer'] = $_POST['benutzer'];
|
Das würde ich so nicht tun!!
1. So landet u.U. Schadcode in Session.
2. Die UserId zu speichern ist vollkommen ausreichend.
3. Erst die ID in Session speichern wenn die User Prüfung erfolgreich war
4. Beachte/vermeide SQL Injections
5. Das Passwort prüft man auch sofort im SQL
|

05-01-2012, 11:31
|
|
Steinchen87
Registrierter Benutzer
|
|
Registriert seit: Jan 2012
Beiträge: 11
|
|
Zitat:
Zitat von ddel
Hi Steinchen87
Da hat sich ganz ein kleiner Fehler eingeschlichen!
Und zwar in folgender Zeile:
PHP-Code:
$sql = 'SELECT * FROM daten WHERE benutzer=\''.$_SESSION['benutzer'].'\'';
Du hast ein Anführungszeichen zu viel drinn. Darum denkt der PHP Intepreter dass es sich bei der nächsten Zeile auch noch um einen String handelt und gibt diesen aus.
Du könntest die Sache auch so schreiben:
PHP-Code:
$sql = "SELECT * FROM daten WHERE benutzer='".$_SESSION['benutzer']."'";
Ich gehe davon aus, dass der Benutzer bei dir ganz normal abgelegt ist und nicht mit Sonderzeichen davor und dahinter?
Gruss
|
Danke schon mal, der Benutzer soll keine Sonderzeichen enthalten das ist korrekt ja.
Kannst du mir die Zeile mal bitte so wieder geben das sie passt? Habe diese
eingefügt und das Anführungszeichen was meines erachtens zu viel war wegg gemacht, aber es geht immer noch nicht
|

05-01-2012, 11:36
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Du wirst renovieren müssen!
|

05-01-2012, 11:43
|
|
ddel
Registrierter Benutzer
|
|
Registriert seit: Jan 2012
Beiträge: 9
|
|
Zitat:
Zitat von Steinchen87
Kannst du mir die Zeile mal bitte so wieder geben das sie passt? Habe diese
eingefügt und das Anführungszeichen was meines erachtens zu viel war wegg gemacht, aber es geht immer noch nicht 
|
Du kannst direkt die zweite Zeile verwenden, sollte so funktionieren!
|

05-01-2012, 11:47
|
|
Steinchen87
Registrierter Benutzer
|
|
Registriert seit: Jan 2012
Beiträge: 11
|
|
Zitat:
Zitat von ddel
Du kannst direkt die zweite Zeile verwenden, sollte so funktionieren!
|
Leider nicht wenn ich dieses eingebe wird immer noch: Parse error: syntax error, unexpected bei - $result = = mysql_query
(wie auch schon vorher) angezeigt.
|

05-01-2012, 12:00
|
|
ddel
Registrierter Benutzer
|
|
Registriert seit: Jan 2012
Beiträge: 9
|
|
PHP-Code:
$result = mysql_query( 'buchungsliste', $sql );
Diese Zeile ist falsch. mysql_query erwartet einen String welcher den SQL Statement beinhaltet ("SELECT * FROM TABELLE).
Die Datenbank (buchungsliste) musst du nicht migeben. Wenn du mit verschiedenen Datenbanken arbeitest, kannst du mysql_query noch die entsprechende Verbindung mitgeben. Wenn das aber nicht der Fall ist, reicht nur das SQL.
Die Datenbank musst du beim Aufbau der Verbindung auswählen:
PHP-Code:
$db_sel = mysql_select_db('buchungsliste');
Nachdem du das alles gemacht hast, würde deine Zeile so aussehen:
PHP-Code:
$sql = "SELECT * FROM daten WHERE benutzer='".$_SESSION['benutzer']."'"; $result = mysql_query($sql);
|

05-01-2012, 12:03
|
|
Steinchen87
Registrierter Benutzer
|
|
Registriert seit: Jan 2012
Beiträge: 11
|
|
Zitat:
Zitat von Steinchen87
Leider nicht wenn ich dieses eingebe wird immer noch: Parse error: syntax error, unexpected bei - $result = = mysql_query
(wie auch schon vorher) angezeigt.
|
ach ja un wenn ich nicht über Debug gehe, sondern über den localhost und den Benutzer mit Passwort eingebe (der bereits regestriert ist) dann findet er den nicht.
|

05-01-2012, 12:09
|
|
Steinchen87
Registrierter Benutzer
|
|
Registriert seit: Jan 2012
Beiträge: 11
|
|
Zitat:
Zitat von ddel
PHP-Code:
$result = mysql_query( 'buchungsliste', $sql );
Diese Zeile ist falsch. mysql_query erwartet einen String welcher den SQL Statement beinhaltet ("SELECT * FROM TABELLE).
Die Datenbank (buchungsliste) musst du nicht migeben. Wenn du mit verschiedenen Datenbanken arbeitest, kannst du mysql_query noch die entsprechende Verbindung mitgeben. Wenn das aber nicht der Fall ist, reicht nur das SQL.
Die Datenbank musst du beim Aufbau der Verbindung auswählen:
PHP-Code:
$db_sel = mysql_select_db('buchungsliste');
Nachdem du das alles gemacht hast, würde deine Zeile so aussehen:
PHP-Code:
$sql = "SELECT * FROM daten WHERE benutzer='".$_SESSION['benutzer']."'";
$result = mysql_query($sql);
|
Okay ja das habe ich bereits bei der Verbindung schon gemacht. Wenn ich das jetzt so eingebe dann sagt er mir das das Passwort zum Benutzer falsch ist. Was aber nicht stimmt. Habe mehrer Datenbanken in phpmyadmin drinn, arbeite aber hier nur mit der Datenbank buchungsliste.
|

05-01-2012, 12:14
|
|
ddel
Registrierter Benutzer
|
|
Registriert seit: Jan 2012
Beiträge: 9
|
|
Zitat:
Zitat von Steinchen87
Wenn ich das jetzt so eingebe dann sagt er mir das das Passwort zum Benutzer falsch ist. Was aber nicht stimmt.
|
Wenn "er" das sagt, dann hat er zu 100% Recht  Überprüfe nochmals ob du die richtige Datenbank anziehst, der Benutzer korrekt eingegeben ist und das Passwort stimmt.
Wenn das alles zutrifft und der Fehler ist noch da: Lösche den Benutzer und lege einen neuen an und merke dir gut das Passwort
Je nach Hoster den du hast, wird dem Benutzernamen noch etwas hinzugefügt. Bsp: du legst den Benutzer Test an. Abgespeichert wird das aber als Test_xy. Das kannst du am besten überprüfen wenn du in der Übersicht de Benutzer nachschaut wie der Name genau ist. Du musst natürlich genau diesen Namen verwenden!
|

05-01-2012, 12:15
|
|
ezkimo
Registrierter Benutzer
|
|
Registriert seit: Apr 2005
Ort: Beckum / Westf.
Beiträge: 211
|
|
Wie wäre es denn mal mit der kompletten Fehlermeldung?
Die Funktion mysql_query ist falsch angewendet. Einfach mal einen Blick in die PHP Dokumentation werfen: PHP: mysql_query - Manual
EDIT: Was passiert wenn Du das SQL Statement über phpMyAdmin direkt ausführst?
|

05-01-2012, 12:47
|
|
Steinchen87
Registrierter Benutzer
|
|
Registriert seit: Jan 2012
Beiträge: 11
|
|
PHP-Code:
// Daten des Servers:
$dbhost_ip = 'localhost'; //Hostname
$dbuser = 'php'; //Benutzer
$dbpw = ''; //Passwort
$dbname = 'buchungsliste';
//----------------------------------------------------------
// Funktion Datenbankabfrage
function db_query( $dbname, $sql )
{
global $dbhost_ip, $dbuser, $dbpw;
// Verbindung zum DB-Host herstellen
$verbindung = @mysql_connect( $dbhost_ip, $dbuser, $dbpw )
or die ('Verbindung zum Datenbank-Rechner (IP-Adresse '.$dbhost_ip.')
konnte nicht hergestellt werden!<br />Fehlertext: '
.mysql_error());
// auswählen der Datenbank
mysql_select_db( $dbname, $verbindung );
// ausführen einer SQL-Anfrage
$result = mysql_query( $sql );
// Datenbankverbindung schließen
mysql_close( $verbindung );
// Rückgabe des Ergebnisses
return( $result );
}
?>
hier noch ma die datei db_abfrage.inc.php die ich includiert hatte.
Vllt ist ja hier der Fehler versteckt. Weil meines erachtens nach greift er ja nicht auf die gewünschten Datensätze zu oder? Login benutzer wird ja nie erkannt
|

05-01-2012, 12:53
|
|
ddel
Registrierter Benutzer
|
|
Registriert seit: Jan 2012
Beiträge: 9
|
|
Nimm mal vor dem mysql_connect das @ Weg. Ich denke du wärst sehr interessiert daran zu sehen was da schief läuft..
Zudem, hast du überprüft ob der Benutzer php existiert? Und du bist dir ganz sicher, dass der Benutzer KEIN Passwort hat?
Wie ezkimo bereits gesagt hat, es wäre sehr hilfreich die ganze Fehlermeldung zu sehen dann.
|

05-01-2012, 13:10
|
|
Steinchen87
Registrierter Benutzer
|
|
Registriert seit: Jan 2012
Beiträge: 11
|
|
Das einzigste was angezeigt wird ist der oben erwähnte Fehler aber nur beim Debugen. Sonst wird kein Fehler angezeigt. Bin absolut am verzweifeln, könnte mir jemand vllt einen Login mit allem drum un drann schreiben? Also abfrage, eingabe, kontrolle???
Servername = localhost
Benutzer = php
Passwort gibt es nicht!
Datenbankname: buchungsliste
Tabellename: daten
Spalten die angesprochen werden sollen:
1.Spalte: benutzer
2.Spalte: Passwort
Dafür wäre ich sehr dankbar sitze seit Tagen drann, komm einfach nicht weiter...
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
Ähnliche Themen
|
| Thema |
Autor |
Forum |
Antworten |
Letzter Beitrag |
|
Login Problem
|
nevermind |
PHP Developer Forum |
27 |
16-09-2008 14:54 |
|
Login Problem~
|
Lini |
PHP Developer Forum |
2 |
22-03-2008 01:24 |
|
Login-Problem
|
dr_mario |
PHP Developer Forum |
8 |
17-05-2007 21:58 |
|
Login problem
|
enoNdo |
PHP Developer Forum |
22 |
08-01-2005 23:12 |
|
Login Problem
|
guest0815 |
SQL / Datenbanken |
8 |
10-09-2003 20:23 |
| Themen-Optionen |
|
|
| 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.
HTML-Code ist aus.
|
|
|
|
PHP News
|