• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Login Bereich

Status
Für weitere Antworten geschlossen.

philipp

Neues Mitglied
Tja, wieder mal ich... ich will nun für mein aktuelles projekt einen login-bereich anlegen.
ich hab mal ne tabelle(aut) erzeugt mit:

  • aut_ID (auto, prim, notnull)
    aut_name (varchar20)
    aut_nachname (varchar28)
    aut_ema (varchar 40)
    aut_pass (varchar 18)
    aut_user (varchar20)

zum testen hab ich nen datensatz engelegt mit:


jetz hab ich das so lösen wollen:

ein link im index nach system.php
Code:
[*][url="system.php"]Administratives[/url]
->im index is ein switch mit der form als default

[php:1:bfe07e7a77]<?php
<?php
switch($_GET['go']) {
case "sst":
include 'pruefung.inc.php';
include 'hallo.inc.php';
break;
case "login":
include 'login2.inc.php';
break;
default:
include 'form.inc.php';
break; }
?>
?>[/php:1:bfe07e7a77]

default:

[php:1:bfe07e7a77]<?php
<?php
echo '
<div align="center" style="width:200px">'."\n".'
<fieldset>'."\n".'
<legend>Login</legend>'."\n".'
<form action="?go=login" method="post">'."\n".'
<p align="left">Benutzername:
<input type="text" name="user" /></p>'."\n".'
<p align="left">Passwort:
<input type="password" name="pass" /></p>'."\n".'
<p align="left"><input type="submit" value="Login" /></p>'."\n".'
</form>'."\n".'
</fieldeset>'."\n".'
</div>'."\n";
?>
?>[/php:1:bfe07e7a77]

go=login:

[php:1:bfe07e7a77]<?php
<?php
if (isset($_POST['user']) and isset($_POST['pass'])) {
$user = $_POST['user'];
$pass = $_POST['pass'];
$sql = "SELECT aut_name FROM aut WHERE $user = aut_user AND $pass = aut_pass LIMIT 1";
$result = @mysql_query($sql);
if ($result) {
SESSION_START();
$_SESSION['pass'] = '1';
echo "
<p align=\"center\">Willkommen im System, $result</p> \n
<p align=\"center\"><a href=\"?go=sst\">Hier</a> geht's weiter</p> \n"; } else {
SESSION_START();
$_SESSION['pass'] = '0';
echo "
<p align=\"center\">Ihre Daten stimmen nicht</p> \n
<p align=\"center\"><a onMouseOver=\"this.style.cursor='hand'\" onClick=\"history.back()\">Hier</a> geht's zur&uuml;ck</p> \n";} } else {
echo "
<p align=\"center\">Tragen sie bitte ihren Benutzernamen und ihr Kennwort ein</p> \n
<p align=\"center\"><a onMouseOver=\"this.style.cursor='hand'\" onClick=\"history.back()\">Hier</a> geht's zur&uuml;ck</p> \n";}
?>
?>[/php:1:bfe07e7a77]

jetz bekomm ich die fehlermeldung:

Code:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Dokumente und Einstellungen\Andrea\Eigene Dateien\xampp\htdocs\juniorcup\system.php:14) in C:\Dokumente und Einstellungen\Andrea\Eigene Dateien\xampp\htdocs\juniorcup\login2.inc.php on line 13

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Dokumente und Einstellungen\Andrea\Eigene Dateien\xampp\htdocs\juniorcup\system.php:14) in C:\Dokumente und Einstellungen\Andrea\Eigene Dateien\xampp\htdocs\juniorcup\login2.inc.php on line 13

Ihre Daten stimmen nicht

Hier geht's zurück

wie ihr sehen könnt geht das ganze dazu auch nicht richtig... denn die eingetragenen daten sind richtig
 
Werbung:
bevor du session_start() ausführst, das kein einziges zeichen an den browser geschickt werden...
du kannst es einfach in die äusserste datei (von den includes her) ganz an den anfang schreiben... wenn du ne session beginnst, auch wenn du keine brauchst, ist das nicht so schlimm ;)
--> mach ich auch auf meiner website in head.php (die überall includet wird)
 
danke, jetz muss ich nurnoch den fehler finden, warum das script nicht funktioniert... also warum ich mich ned einloggen kann

EDIT: das script zum einloggen

[php:1:fe517a8009]<?php
<?php
if (isset($_POST['user']) and isset($_POST['pass'])) {
@mysql_connect('localhost', 'root') or die("

Datenbankprogramm nicht erreichbar</p>");
@mysql_select_db('juniorcup') or die("

Datenbank reagiert nicht</p>");
$user = $_POST['user'];
$pass = md5($_POST['pass']);
$sql = "SELECT ´aut_name´ FROM ´aut´ WHERE $user = ´aut_user´ AND $pass = ´aut_pass´ LIMIT 1";
$result = @mysql_query($sql);
if ($result) {
$_SESSION['pass'] = '1';
echo "
<p align=\"center\">Willkommen im System, $result</p> \n
<p align=\"center\"><a href=\"?go=sst\">Hier</a> geht's weiter</p> \n"; } else {
$_SESSION['pass'] = '0';
echo "
<p align=\"center\">Ihre Daten stimmen nicht</p> \n
<p align=\"center\"><a onMouseOver=\"this.style.cursor='hand'\" onClick=\"history.back()\">Hier</a> geht's zur&uuml;ck</p> \n";} } else {
echo "
<p align=\"center\">Tragen sie bitte ihren Benutzernamen und ihr Kennwort ein</p> \n
<p align=\"center\"><a onMouseOver=\"this.style.cursor='hand'\" onClick=\"history.back()\">Hier</a> geht's zur&uuml;ck</p> \n";}
?>
?>[/php:1:fe517a8009]
 
Werbung:
also ich weiß ja nich aber warum startest du 2x php?

und die ´ müssen andersrum wenn du sie schon hinmachst.

und datenbank pw solltest du auch angeben^^

[php:1:e574711d1d]
<?php
if (isset($_POST['user']) and isset($_POST['pass'])) {
@mysql_connect('localhost', 'root') or die("

Datenbankprogramm nicht erreichbar</p>");
@mysql_select_db('juniorcup') or die("

Datenbank reagiert nicht</p>");
$user = $_POST['user'];
$pass = md5($_POST['pass']);
$sql = "SELECT `aut_name` FROM `aut` WHERE $user = `aut_user` AND $pass = `aut_pass` LIMIT 1";
$result = @mysql_query($sql);
if ($result) {
$_SESSION['pass'] = '1';
echo "
<p align=\"center\">Willkommen im System, $result</p> \n
<p align=\"center\"><a href=\"?go=sst\">Hier</a> geht's weiter</p> \n"; } else {
$_SESSION['pass'] = '0';
echo "
<p align=\"center\">Ihre Daten stimmen nicht</p> \n
<p align=\"center\"><a onMouseOver=\"this.style.cursor='hand'\" onClick=\"history.back()\">Hier</a> geht's zur&uuml;ck</p> \n";} } else {
echo "
<p align=\"center\">Tragen sie bitte ihren Benutzernamen und ihr Kennwort ein</p> \n
<p align=\"center\"><a onMouseOver=\"this.style.cursor='hand'\" onClick=\"history.back()\">Hier</a> geht's zur&uuml;ck</p> \n";}

?>[/php:1:e574711d1d]

und das WHERE $user = `aut_user` is eingentlich auch unlogisch, da das ja mit nichts verglichen wird

MfG mou
 
1. statt isset wuerde ich array_key_exists nehmen
2. statt double quotes wuerde ich single quotes nehmen (echo '[...]'; )
3. statt zurueck link ein login formular einblenden.
mou was meinst du mit
und das WHERE $user = `aut_user` is eingentlich auch unlogisch, da das ja mit nichts verglichen wird

??
 
Werbung:
philipp schrieb:
und die ´ müssen andersrum wenn du sie schon hinmachst.

is dem apache wurscht

ja da es absolut nichts mit einem apache zu tuen hat.
es geht um einen string in php der an einen mysqld geschickt wird - und diese teile gehoeren dort NIcht hin
(seit wann kannst du ueber die gefuehle von webservern bestimmen..)
 
die hatte ich sowieso nicht vom anfang an drinn... jemand hat das mal gemacht, dann wollt ichs mal so versuchen, falls der fehler da is.. war er aber nicht und die dinger werden wieder weggemacht.... aber danke trotzdem
 
--> ich würde für jedes projekt einen benutzer machen... ich habs immer so:
login nur localhost
user [dbname]
pw [dbname]_***
rechte alles mit tabellen in db
 
Werbung:
also dieser doppelpost muss nun sein damit jemand in den thread schaut...
ich kann meinen fehler beim besten willen nicht finden. ich bekomme auch keine fehlermeldung, scheint also ein logikfehler zu sein... es geht um ein CMS das ich mache. aber der login-bereich macht schon solche schwierigkeiten

also:
start des CMS:
[php:1:9530a09576]
<?php include 'head.inc.php';?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">


<head>
<title>Juniorcup CMS</title>
<link href="css/main.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div class="sys">
<?php
switch($_GET['go']) {
case "sst":
include 'pruefung.inc.php';
include 'hallo.inc.php';
break;
case "login":
include 'login2.inc.php';
break;
default:
include 'form.inc.php';
break; }
?>
</div>
</body>

</html>
[/php:1:9530a09576]

head.inc.php:
[php:1:9530a09576]
<?php
SESSION_START();
$_SESSION['pass'] = 0;
?>[/php:1:9530a09576]

form.inc.php:
[php:1:9530a09576]
<?php
echo "
<div align=\"center\" style=\"width:200px\"> \n
<fieldset> \n
<legend>Login</legend> \n
<form action=\"system.php?go=login\" method=\"post\"> \n
<p align=\"left\">Benutzername:
<input type=\"text\" name=\"user\" /></p> \n
<p align=\"left\">Passwort:
<input type=\"password\" name=\"pass\" /></p> \n
<p align=\"left\"><input type=\"submit\" value=\"Login\" /></p> \n
</form> \n
</fieldeset> \n
</div> \n";
?>
[/php:1:9530a09576]

login2.inc.php:
[php:1:9530a09576]
<?php
//WENN kein benutzername angegeben wurde
if (!isset ($_POST['user'])) {
echo "<p align=\"center\">Kein Benutzername angegeben</p> \n
<p align=\"center\">
<a onMouseOver=\"this.style.cursor='hand'\" onClick=\"history.back()\">Hier</a> geht's zur&uuml;ck</p> \n";
exit();
}
//WENN kein Passwort angegeben wurde
if (!isset ($_POST['pass'])) {
echo "<p align=\"center\">Kein Passwort angegeben</p> \n
<p align=\"center\">
<a onMouseOver=\"this.style.cursor='hand'\" onClick=\"history.back()\">Hier</a> geht's zur&uuml;ck</p> \n";
exit();
}
@mysql_connect('localhost', 'root') or die("

Datenbankprogramm nicht erreichbar</p>");
@mysql_select_db('juniorcup') or die("

Datenbank reagiert nicht</p>");
$user = $_POST['user'];
$pass = md5($_POST['pass']);
$sql = "SELECT `aut_name` FROM `aut` WHERE $user = `aut_user` AND $pass = `aut_pass` LIMIT 1";
$result = @mysql_query($sql);
if ($result == FALSE) {
$_SESSION['pass'] = 0;
echo "
<p align=\"center\">Benutzername und/oder Kennwort stimmen nicht</p> \n
<p align=\"center\">
<a onMouseOver=\"this.style.cursor='hand'\" onClick=\"history.back()\">Hier</a> geht's zur&uuml;ck</p> \n";
} else {
$_SESSION['pass'] = 1;
echo "
<p align=\"center\">Willkommen im System, $user</p> \n
<p align=\"center\"><a href=\"?go=sst\">Hier</a> geht's weiter</p> \n"; }
?>
[/php:1:9530a09576]

pruefung.inc.php:
[php:1:9530a09576]
<?php
if (!$_SESSION['pass'] == 1) {
echo "<p align=\"left\">Sie sind nicht im System angemeldet</p> \n";
include 'form.inc.php';
exit();
}
?>
[/php:1:9530a09576]

hallo.inc.php
[php:1:9530a09576]
<?php
echo '
<p align="center">Willkommen im Content Management System der Website des Juniorcups

Hier k&ouml;nnen sie Ergebnisse eintragen oder z.B. Bilder hochladen</p>
';
?>
[/php:1:9530a09576]

DATENBANK:
Tabellenname: aut
Felder:
aut_ID
aut_name
aut_nachname
aut_ema
aut_pass (md5)
aut_user
 
Werbung:
trim schneidet leerzeichen am anfang und ende des strings ab, dann kann man keine " " eingeben und es wird akzeptiert
strcmp vergleicht 2 strings... also schaut er ob das ergebnis nicht true ist, sonst wäre der string ja leer...
 
aber sowas von logisch, dass es bei mir nicht funktioniert.
so siehts jetzt aus:

[php:1:f32b659358]<?php
//Pruefen ob Eingaben erfolgt sind
if (isset ($_POST['user'], $_POST['pass'])) {
//Verbinden mit MySQL
@mysql_connect('localhost', 'root') or die("
<p align=\"center\">Konnte nicht mit MySQL verbinden</p>");
//Laden der Datenbank
@mysql_select_db('juniorcup') or die("
<p align=\"center\">Konnte Datenbank nicht laden

MySQL-Error: ".mysql_error()."</p>");
//SQL Anfrage an MySQL schicken
$sql = "SELECT aut_name FROM aut WHERE
aut_user = '".$_POST['user']."' AND
aut_pass = '".md5($_POST['pass'])."'";

$result = mysql_query($sql) or die("
<p align=\"center\">Datenbank reagiert nicht

MySQL-Error: ".mysql_error()."</p>");
//Auswertung der Antwort
if( mysql_num_rows($result) != 1 ) {
echo "<p align=\"center\">Ihre Daten stimmen nicht</p>";
include 'form.inc.php';
exit();
}
$_SESSION['loggedIn'] = true;
echo " <p align=\"center\">Willkommen im internen System, ".$result['aut_name']."
\n
<a href=\"system.php?go=sst\">Hier</a> geht's weiter.</p>";
}

?>[/php:1:f32b659358]

die pruefung.inc.php hab ich entsprechend angepasst...

ich bekomme keine errors aber IMMER nur:
Code:
Ihre Daten stimmen nicht

aber ich geb das richtige ein.. als beispiel:
ich hab einen eintrag in "aut"(tabelle mit usern) gemacht mit:
aut_name: Tester
aut_user: Tester
aut_pass: test / davor md5 eingestellt(mit phpMyadmin)

jetzt gebe ich genau das ein beim login aber es kommt immer nur
"Ihre Daten stimmen nicht"

BTW: kann mir jemand ein gutes(!) buch empfehlen?
ich hab hier PHP5/MySQL4 von matthias kannengiesser und
PHP und MySQL von Kevin Yank.

find beide ziehmlich beschissen

edit: fehler nach einigen tagen endlich gefunden... man soll beim PW wohl nicht varchar nehmen ;)
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben