PHP MySQL Login System

  • #1
C

Ciryx

Bekanntes Mitglied
Themenersteller
Dabei seit
07.01.2004
Beiträge
135
Reaktionspunkte
0
Ort
Zürich
Hallo zusammen und wieder einmal hallo Conny... ;)
Ich muss euch schon wieder belästigen.

Ich bin eine Seite für einen Kollgen welcher bei hattrick.org mitspielt am aufbauen.

--> http://sharks.ciryx.ch/

Wie Ihr sehen könnt Gibt es Links unter dem Menü ein Intern. Mein Ziel ist es, dass nach erfolgreichem einloggen (mehrere Benutzer) ein neuer Menüpunkt auftaucht (Verwaltung). Anschliessend kann dann der eingeloggt User die Seite Verwalten was allerdings nicht primär das Problem ist. Das wirkliche Hinderniss für mich ist das Login da ich von Sessions keine Ahnung habe... Ein Rätsel ist mir auch, wie ich anschliessend die einzelnen Seiten unter dem Menüpunkt Verwaltung schütze, so dass nur die eingeloggten User diese sehen können.
 
  • #2
Login über MySQL ?? ??? ?? ??? ??

edit:
LOOOOL, steht ja im Titel ::)
 
  • #3
Wie meinst du das jetzt?

Also die Benutzer werden von mir erfasst und in di DB gespeichert.
 
  • #4
Ciryx schrieb:
Wie meinst du das jetzt?

Hab nur mit einem Auge gelesen, stand doch im Titel des Postings das es um MySQL geht ;D ;D

OK,

index.php

Code:
<?php
/**
Muss direkt am Anfang stehen
*/
session_start();
require_once('login_out.php');
.....
.....
.....
?>

login_out.php

Code:
<?php
if($_POST['submit_login']) {
	if(!$_POST['username'] || !$_POST['password']) {
		/**
			Fehlerbehandlung
		*/
	}
	else {
		$sql = SELECT * FROM tbl_user WHERE u_name='.$_POST['username'].' AND u_pass='.md5($_POST['password']).' LIMIT 1;
		if($res = mysql_query($sql)) {
			if($row = mysql_fetch_row($res)){
				$_SESSION['u_name'] 	= $row['u_name'];
				$_SESSION['uid']		= $row['uid'];
				$_SESSION['is_valid'] 	= true;
				header('Location:index.php?'.SID);
			}
			/**
				Fehlerbehandlung
			*/
		}
		else {
			/**
				Fehlerbehandlung
			*/
		}
	}
}
if($_POST['submit_logout']) {
	unset($_SESSION['is_valid']);
	header('Location:index.php'.SID);
}
?>

und in jede Seite die du schützen möchtest, schreibst du ganz oben folgendes:

Code:
<?php
if(!$_SESSION['is_valid']) die('Du hast hier nix verloren!!');
....
....
?>
 
  • #5
hi

wie müsste für dieses Skript die SQL Tabelle aussehen?

mfg Bene
 
  • #6
bene schrieb:
wie müsste für dieses Skript die SQL Tabelle aussehen?

egal, hauptsache es gibt die Felder

- uid
- u_name
- u_pass

is aber eigentlich auch Wurscht, is ja nur ein Bsp. wie es funktionieren könnte ;) ;D

edit:

BTW, sollten diese Felder eh in jeder Usertabelle vorhanden sein ;) ;) ;)
 
  • #7
Und das dazugehörige Formular? Wäre dir dankbar wenn du dieses auch noch posten könntest damit ich sichergehen kann das ich es auch richtig mache!
 
  • #8
Öhm, das is doch schon da ;)

brauchst es nur ein bissle abändern

Code:
<form action=index.php method=post> 
 name<br><input type=text name=username size=20><br>
 passwort<br><input type=password name=password size=20><br><br>
 <input type=submit name=submit_login value=enter>
</form>

Noch eins, wenn du LOGOUT nur über einen Link und nicht über ein Formular machst, muss das so aussehen.

Code:
<?php
....
....
if($_REQUEST['submit_logout']) {
unset($_SESSION['is_valid']);
header('Location:index.php'.SID);
}
?>
 
  • #9
Ok bis hier hin danke! ;)

Nun taucht folgende Fehlermeldung auf:

Warning: Cannot modify header information - headers already sent by...
 
  • #10
Jo, die Meldung kommt wenn schon irgendeine Ausgabe per ECHO oder sonstwas da ist.

Daher steht auch in meinem Bsp.

/**
Muss direkt am Anfang stehen
*/
 
  • #11
Jup... Das habe ich au beachtet! Habe dies ganz am Anfang der index.php gesetzt. Funktioniert trotzdem nicht. An was könnte das liegen? Hast du eine Idee?
 
  • #12
also:

ich habe meine index.php, in welcher auch das Formular integriert ist.

index.php

Code:
<?php

session_start();
require_once('session.php');

?>
...

<form action=index.php?q=session.php method=post>
 name<br><input type=text name=username size=20><br>
 passwort<br><input type=password name=password size=20><br><br>
 <input type=submit name=submit_login value=enter>
</form>

...

Die session.php entspricht der Datei welche du oben login_out.php genannt hast.

session.php

Code:
<?php
if($_POST['submit_login']) {
if(!$_POST['username'] || !$_POST['password']) {
/**
Fehlerbehandlung
*/
}
else {
$sql = SELECT * FROM login WHERE nickname='.$_POST['username'].' AND kennwort='.md5($_POST['password']).' LIMIT 1;
if($res = mysql_query($sql)) {
if($row = mysql_fetch_row($res)){
$_SESSION['nickname'] = $row['nickname'];
$_SESSION['id'] = $row['id'];
$_SESSION['is_valid'] = true;
header('Location:?q=verwaltung.php'.SID);
}
/**
Fehlerbehandlung
*/
}
else {
/**
Fehlerbehandlung
*/
}
}
}
if($_POST['submit_logout']) {
unset($_SESSION['is_valid']);
header('Location:?q=presserklärung.php'.SID);
}
?>
 
  • #13
Und wo ist der mysql_connect ;) ;D ;D
 
  • #14
Nein den connect habe ich...

Gleich nach dem eintrag

Code:
<?php

session_start();
require_once('session.php');

?>

...

<?php
include (mysql.php);
?>

Sorry... habe gedacht ist hier nicht nötig zu erwähnen ;)

Aber ich verzweifle langsam:

Du kannst es ja selber überprüfen auf http://sharks.ciryx.ch auch wenn man eine falsche Eingabe macht kommt diese Fehlermeldung
 
  • #15
Sorry, mein Fehler :'( dachte es währe klar, dass man keine SQL-Abfrage ausführen kann wenn noch kein Connect da ist ;)

Logisch gehört das einbinden der mysql.php noch dazwischen.

Code:
<?php
session_start();
include (mysql.php);
require_once('session.php');
...
...
?>

BTW, ich seh aber keine Fehlermeldung wenn ich das Formular bei dir abschicke ;)
 
  • #16
Gut nun habe ich folgende Fehlermeldungen:

Bei Eingabe der korrekten Benutzerdaten:
Code:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/ciryxch/public_html/sharks/mysql.php:12) in /home/ciryxch/public_html/sharks/index.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at /home/ciryxch/public_html/sharks/mysql.php:12) in /home/ciryxch/public_html/sharks/session.php on line 15

Bei Eingabe falscher Benutzerdaten:
Code:
keine... Aber auch kein Ausgabe!
 
  • #17
Jo, und was steht in der mysql.php in Zeile 12 ??
 
  • #18
Danke für deine Geduld mit mir...! ;)

meine mysql.php
Code:
<?php


$connectionid = mysql_connect (localhost, blabla, versteckt);
if (!mysql_select_db (test, $connectionid))
{
 die (Keine Verbindung zur Datenbank);
}

?>

Ist hier etwas falsch?
 
  • #19
Ciryx schrieb:
Ist hier etwas falsch?

Nö, eigentlich nicht ;)

Probiers trotzdem mal so:

Code:
<?php
if(!@mysql_connect(localhost, blabla, versteckt)) die(Kein Connect);
if(!@mysql_select_db(test)) die(Keine Verbindung zur Datenbank);
?>
 
  • #20
:( :( :(

nnnööö...

Immer noch die gleichen Fehlermeldungen wie vorhin beschrieben! :(
Ausser das es jetzt Zeile 7 sein soll im mysql.php
 
Thema:

PHP MySQL Login System

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.839
Beiträge
707.962
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben