Logo - MyWebsolution.de
User gesamt  :  1999416
User online  :  1
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
   
   
 
Registrieren Login User F.A.Q Suche Home

eingeloggt bleiben

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 xD

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">&nbsp;</td>
    </tr>
    <tr>
      <td width="8" height="28">&nbsp;</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">&nbsp;</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">&nbsp;</td>
    </tr>
    <tr>
      <td height="35">&nbsp;</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>
Profil ansehen
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
Profil ansehen
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.


Profil ansehen Mail senden
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">&nbsp;</td>
    </tr>
    <tr>
      <td width="8" height="28">&nbsp;</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">&nbsp;</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">&nbsp;</td>
    </tr>
    <tr>
      <td height="35">&nbsp;</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>
Profil ansehen
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">&nbsp;</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 ;)


Profil ansehen Mail senden
Seite: 1 2 3 4 5 6 7  > no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik