|
|
User gesamt
|
:
|
1999416
|
User online
|
:
|
1
|
|
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
|
|
|
|
MyWebsolution.de Foren » Workshops » Problem bei Loginskript
Seite:
|
1
2
3
4
5
6
7
>
|
Posts pro Seite: 5
10
20
|
Autor
|
Thread
|
05.01.2007 10:43 Uhr
|
Problem bei Loginskript
|
mdean
|
Forenposter
|
|
registriert
|
03.01.2007
|
wohnt in
|
Schweiz
|
Beiträge
|
90
|
|
Hi ich bins wieder!
Hab da jetzt ein Problem mit meinem Loginskript. Ich hab es in einer externen Datei gemacht, die ich dann auf jeder site include. Aber irgendwas ist wieder falsch beim Skript den es kommt folgende fehlermeldung:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Testserver\test\register.php:16) in C:\Testserver\test\login.php on line 9
Hier mal das Skript. Das mit den Cookies hab ich rausgenommen, da ich das mit den Sessions besser finde. Hoffe kannst mir helfen 
PHP:
<form action="<? echo $_SERVER['PHP_SELF'] ?>" method="post" name="login" target="_self" id="login">
<?php
session_start();
error_reporting(E_ALL);
include 'conect.php';
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
// Loggt einen User ein, ..
function doLogin($ID, $Autologin=false)
{
// .. indem die aktuelle Session ID in der Datenbank gespeichert wird
$sql = "UPDATE
User
SET
SessionID = '".mysql_real_escape_string(session_id())."',
Autologin = NULL,
IP = '".$_SERVER['REMOTE_ADDR']."',
Letzte_Aktion = '".mysql_real_escape_string(time())."',
Letzter_Login = '".mysql_real_escape_string(time())."'
WHERE
ID = '".$ID."'
";
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
// Daten des Users in der Session speichern
$sql = "SELECT
Nickname
FROM
User
WHERE
ID = '".$ID."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
$row = mysql_fetch_assoc($result);
$_SESSION['UserID'] = $ID;
$_SESSION['Nickname'] = $row['Nickname'];
}
if(isset($_POST['Send_x'], $_POST['Send_x']) ){
// Falls der Nickname und das Passwort übereinstimmen..
$sql = "SELECT
ID
FROM
User
WHERE
Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND
Passwort = '".md5(trim($_POST['Passwort']))."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
// wird die ID des Users geholt und der User damit eingeloggt
$row = mysql_fetch_assoc($result);
// Prüft, ob wirklich genau ein Datensatz gefunden wurde
if (mysql_num_rows($result)==1){
doLogin($row['ID'], isset($_POST['Autologin']));
echo "<h4>Willkommen ".$_SESSION['Nickname']."</h4>\n";
echo "Sie wurden erfolgreich eingeloggt.<br>\n".
"Zur <a href=\"index.php\">Startseite</a>\n";
}
else{
echo "Sie konnten nicht eingeloggt werden.<br>\n".
"Nickname oder Passwort fehlerhaft.<br>\n".
"Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Login-Formular</a>\n";
}
}
?>
<table width="206" height="120" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="29" colspan="4"> </td>
</tr>
<tr>
<td width="8" height="28"> </td>
<td colspan="3"><label>
<input name="username" type="text"
class=blur id=username
style="width:125px; height:18px; font-family:Verdana; font-size:11px; color:#515151; border-width:1px; border-style:solid; border-color:#7B7B7B"
onFocus="style.background='#E4E4E4';if(value == 'username'){value=''};"
onBlur="style.background='#ffffff';if(value== ''){value='username'}" value=username
size=21 maxlength="30">
</label></td>
</tr>
<tr>
<td height="28"> </td>
<td colspan="2"><input name="password" type="password"
class="logininput"
style="width:125px; height:18px; font-family:Verdana; font-size:11px; color:#515151; border-width:1px; border-style:solid; border-color:#7B7B7B"
onFocus="style.background='#E4E4E4';if(value == 'password'){value=''};"
onBlur="style.background='#ffffff';if(value== ''){value='password'}" value="password"
size=21 maxlength="32" /></td>
<td width="43"> </td>
</tr>
<tr>
<td height="35"> </td>
<td width="72" height="35" align="center" valign="middle"><span class="navi_rechts"><a href="register.php">Registrieren</a></span></td>
<td width="83" align="center" valign="top" class="navi_rechts"><a href="pw_forgot.php">PW<br />
vergessen?</a></td>
<td height="35"><input name="imageField4" type="image" onclick="submit()" src="pics/search.gif" /></td>
</tr>
</table>
</form>
|
|
|
05.01.2007 13:06 Uhr
|
|
ulmli
|
Forenuser
|
|
registriert
|
03.01.2007
|
wohnt in
|
|
Beiträge
|
46
|
|
Huhu mdean,
ich bin ja kein experte, aber ich glaube wenn ich das oben richtig verstanden haben muss das session_start ganz oben in der Datei stehen dann müsste das was bei Dir ganz oben steht da drunter... weiß aber net ob das daran liegt.
grüßlis
ulmli
|
|
|
05.01.2007 13:31 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
hey,
richtig, vor session_start() darf keine Ausgabe stattfinden, also kein echo ""; und auch kein HTML Code.
Die erste Zeile bei dir lautet
PHP:
<form action="<? echo $_SERVER['PHP_SELF'] ?>" method="post" name="login" target="_self" id="login">
also liegt eine Ausgabe vor.
Gruß Flitze
Dieser Beitrag wurde am 05.01.2007 um 13:32:15 Uhr von Flitze zum 1. Mal editiert.
|
|
|
05.01.2007 14:06 Uhr
|
|
mdean
|
Forenposter
|
|
registriert
|
03.01.2007
|
wohnt in
|
Schweiz
|
Beiträge
|
90
|
|
gut hab das jetzt geändert, hab die session_start jetzt am anfang jedes dokumentes eingefügt. Jetzt zeigt es zwar die Fehlermeldung nicht mehr an, aber der Login funzt immer noch nicht. Es lädt einfach die Site neu, egal ob die Eingaben richtig waren oder nicht.
Hier nochmal der code:
PHP:
<form action="<? echo $_SERVER['PHP_SELF'] ?>" method="post" name="login" target="_self" id="login">
<?php
error_reporting(E_ALL);
include 'conect.php';
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
// Loggt einen User ein, ..
function doLogin($ID, $Autologin=false)
{
// .. indem die aktuelle Session ID in der Datenbank gespeichert wird
$sql = "UPDATE
User
SET
SessionID = '".mysql_real_escape_string(session_id())."',
Autologin = NULL,
IP = '".$_SERVER['REMOTE_ADDR']."',
Letzte_Aktion = '".mysql_real_escape_string(time())."',
Letzter_Login = '".mysql_real_escape_string(time())."'
WHERE
ID = '".$ID."'
";
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
// Daten des Users in der Session speichern
$sql = "SELECT
Nickname
FROM
User
WHERE
ID = '".$ID."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
$row = mysql_fetch_assoc($result);
$_SESSION['UserID'] = $ID;
$_SESSION['Nickname'] = $row['Nickname'];
}
if(isset($_POST['Send_x'], $_POST['Send_x']) ){
// Falls der Nickname und das Passwort übereinstimmen..
$sql = "SELECT
ID
FROM
User
WHERE
Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND
Passwort = '".md5(trim($_POST['Passwort']))."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
// wird die ID des Users geholt und der User damit eingeloggt
$row = mysql_fetch_assoc($result);
// Prüft, ob wirklich genau ein Datensatz gefunden wurde
if (mysql_num_rows($result)==1){
doLogin($row['ID'], isset($_POST['Autologin']));
header ("Location: usercenter.php");
}
else{
header ("Location: pw_forgot.php");
}
}
?>
<table width="206" height="120" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="29" colspan="4"> </td>
</tr>
<tr>
<td width="8" height="28"> </td>
<td colspan="3"><label>
<input name="username" type="text"
class=blur id=username
style="width:125px; height:18px; font-family:Verdana; font-size:11px; color:#515151; border-width:1px; border-style:solid; border-color:#7B7B7B"
onFocus="style.background='#E4E4E4';if(value == 'username'){value=''};"
onBlur="style.background='#ffffff';if(value== ''){value='username'}" value=username
size=21 maxlength="30">
</label></td>
</tr>
<tr>
<td height="28"> </td>
<td colspan="2"><input name="password" type="password"
class="logininput"
style="width:125px; height:18px; font-family:Verdana; font-size:11px; color:#515151; border-width:1px; border-style:solid; border-color:#7B7B7B"
onFocus="style.background='#E4E4E4';if(value == 'password'){value=''};"
onBlur="style.background='#ffffff';if(value== ''){value='password'}" value="password"
size=21 maxlength="32" /></td>
<td width="43"> </td>
</tr>
<tr>
<td height="35"> </td>
<td width="72" height="35" align="center" valign="middle"><span class="navi_rechts"><a href="register.php">Registrieren</a></span></td>
<td width="83" align="center" valign="top" class="navi_rechts"><a href="pw_forgot.php">PW<br />
vergessen?</a></td>
<td height="35"><input name="imageField4" type="image" onclick="submit()" src="pics/search.gif" /></td>
</tr>
</table>
</form>
|
|
|
05.01.2007 15:15 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
*seuf*
Du musst wenn dann auch alle Namen ändern, wenn du die Namen der Input Felder änderst..
Gleiches Problem wie zuvor:
Code:
!!!!!!!!!!!!!!!
<input name="username" type="text"
class=blur id=username
style="width:125px; height:18px; font-family:Verdana; font-size:11px; color:#515151; border-width:1px; border-style:solid; border-color:#7B7B7B"
onFocus="style.background='#E4E4E4';if(value == 'username'){value=''};"
onBlur="style.background='#ffffff';if(value== ''){value='username'}" value=username
size=21 maxlength="30">
</label></td>
</tr>
<tr>
<td height="28"> </td>
!!!!!!!!!!!!!!!
<td colspan="2"><input name="password" type="password"
class="logininput"
style="width:125px; height:18px; font-family:Verdana; font-size:11px; color:#515151; border-width:1px; border-style:solid; border-color:#7B7B7B"
onFocus="style.background='#E4E4E4';if(value == 'password'){value=''};"
onBlur="style.background='#ffffff';if(value== ''){value='password'}" value="password"
size=21 maxlength="32" /></td>
Das Skript erwartet aber
Nickname und Passwort
PHP:
$sql = "SELECT
ID
FROM
User
WHERE
Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND // $_POST['Nickname'] wird erwartet
Passwort = '".md5(trim($_POST['Passwort']))."' // $_POST['Passwort'] wird erwartet
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
Wenn du in deinem HTML Code die Feldnamen änderst, musst du auch die Variablen im Quellcode ändern
|
|
|
Seite:
|
1
2
3
4
5
6
7
>
|
|
|
Powered by
|
Pascal Landau
|
© 2006
|
MyWebsolution.de
|
Designed by
|
Pascal Landau
|
© 2006
|
MyWebsolution.de
|
|
|
|
|
|