Logo - MyWebsolution.de
User gesamt  :  2346570
User online  :  4
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 Posts pro Seite: 5 10 20
Autor Thread
18.08.2008 16:35 Uhr
gizzy2k7
User
 
registriert 18.08.2008
wohnt in
Beiträge 4
Hallo ich hab ein ähnliches Problem.

Warning: Cannot modify header information - headers already sent by (output started at /var/www/webxx/html/login.php:66) in /var/www/webxx/html/login.php on line 36

PHP:

<?php
    error_reporting
(E_ALL);
    
$MYSQL_HOST 'localhost';
    
$MYSQL_USER 'webxx';
    
$MYSQL_PASS 'xxxxxxx';
    
$MYSQL_DATA 'usr_webxx_1';

    
$connid = @mysql_connect($MYSQL_HOST$MYSQL_USER$MYSQL_PASS) OR die("Error: ".mysql_error());
    
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());

     
session_start();

    
// 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());
        
// Wenn 'eingeloggt bleiben' aktiviert wurde
        
if($Autologin){
            
// Zufallscode erzeugen
            
$part_one substr(time()-rand(100100000),5,10);
            
$part_two substr(time()-rand(100100000),-5);
            
$Login_ID md5($part_one.$part_two);
            
// Code im Cookie speichern, 10 Jahre dürfte genügen
            
setcookie("Autologin"$Login_IDtime()+60*60*24*365*10);
            
$sql "UPDATE
                            User
                    SET
                            Autologin = '"
.$Login_ID."'
                    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'];
    }
?>


Zeile 62-111 ist das gerüst meiner Seite. Dann kommt das Login Formular.
(Auf englisch umgeschrieben)

PHP:
<?php
    
if(isset($_POST['submit']) AND $_POST['submit']=='Log in'){
        
// 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>Welcome ".$_SESSION['Nickname']."</h4>\n";
             echo 
"You was logged in succesfully!.<br>\n".
                  
"Back to <a href=\"index.php\" class=\"link\">Main Page</a>\n";
        }
        else{
             echo 
"Your Login failed.<br>\n".
                  
"Nickname or password wrong.<br>\n".
                  
"Try it <a class=\"link\" href=\"".$_SERVER['PHP_SELF']."\">again</a>\n";
        }
    }
    else{
        echo 
"<form ".
             
" name=\"Login\" ".
             
" action=\"".$_SERVER['PHP_SELF']."\" ".
             
" method=\"post\" ".
             
" accept-charset=\"ISO-8859-1\">\n";
        echo 
"<table border=\"0\"><tr><td>Nickname :\n</td>";
        echo 
"<td><input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n</td>";
        echo 
"</tr><br>\n";
        echo 
"<tr><td>Passwort :\n</td>";
        echo 
"<td><input type=\"password\" name=\"Passwort\">\n</td>";
        echo 
"</tr><br>\n";
        echo 
"<tr><td>Stay logged in?\n</td>";
        echo 
"<td><input type=\"checkbox\" name=\"Autologin\" value=\"1\">\n</td>";
        echo 
"</tr></table><br>\n";
        echo 
"<input type=\"submit\" name=\"submit\" value=\"Log in\">\n";
        echo 
"<br>\n";
        echo 
"<a class=\"link\" href=\"pwch.php\">Forgot password</a> or not <a class=\"link\" href=\"register.php\">registered</a> yet?\n";
        echo 
"</form>\n";
    }
?> 


Ich verstehs nicht :(
Der normale Login funkt soweit, nur mit dem stay logged in häckchen klappts nicht vollständig (einloggen tut er trotzdem)

Vielen dank schonmal für eure hilfe

Dieser Beitrag wurde am 18.08.2008 um 16:39:13 Uhr von gizzy2k7 zum 1. Mal editiert.
Profil ansehen
18.08.2008 17:06 Uhr RE:
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Zitat:
gizzy2k7
Hallo ich hab ein ähnliches Problem.

Warning: Cannot modify header information - headers already sent by (output started at /var/www/webxx/html/login.php:66) in /var/www/webxx/html/login.php on line 36

Zeile 62-111 ist das gerüst meiner Seite. Dann kommt das Login Formular.
(Auf englisch umgeschrieben)

Ich verstehs nicht :(
Der normale Login funkt soweit, nur mit dem stay logged in häckchen klappts nicht vollständig (einloggen tut er trotzdem)

Vielen dank schonmal für eure hilfe


Also ich vermute Folgendes:
Der Autologin funzt nicht, weil dabei ein Cookie gesetzt wird. Da du aber sagst, dass du zuvor das Grundgerüst der Seite ausgibst, wurde ja bereits eine HTML Ausgabe gemacht. Dadurch kann kein Cookie mehr gesetzt werden (Cannot modify header information).
Der "normale" Login funtioniert ohne Probleme, weil die Session bereits zu Beginn des Scriptes (also vor dem "Grundgerüst" deiner Seite) gestartet wird - dabei gibts also keinen Konflikt.

Testweise könntest mal versuchen,
PHP:
<?php
    
if(isset($_POST['submit']) AND $_POST['submit']=='Log in'){
        
// 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']));
        }
?>

An den Anfang des Skriptes zu schreiben (vor jeder HTML Ausgabe!!!) und den Code in deinem Login-Formular folgendermaßen umzuschreiben:

PHP:
<?php
    
if(isset($_POST['submit']) AND $_POST['submit']=='Log in'){
        if (isset(
$_SESSION['UserID'])){
             echo 
"<h4>Welcome ".$_SESSION['Nickname']."</h4>\n";
             echo 
"You was logged in succesfully!.<br>\n".
                  
"Back to <a href=\"index.php\" class=\"link\">Main Page</a>\n";
        }
        else{
             echo 
"Your Login failed.<br>\n".
                  
"Nickname or password wrong.<br>\n".
                  
"Try it <a class=\"link\" href=\"".$_SERVER['PHP_SELF']."\">again</a>\n";
        }
    }
    else{
        echo 
"<form ".
             
" name=\"Login\" ".
             
" action=\"".$_SERVER['PHP_SELF']."\" ".
             
" method=\"post\" ".
             
" accept-charset=\"ISO-8859-1\">\n";
        echo 
"<table border=\"0\"><tr><td>Nickname :\n</td>";
        echo 
"<td><input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n</td>";
        echo 
"</tr><br>\n";
        echo 
"<tr><td>Passwort :\n</td>";
        echo 
"<td><input type=\"password\" name=\"Passwort\">\n</td>";
        echo 
"</tr><br>\n";
        echo 
"<tr><td>Stay logged in?\n</td>";
        echo 
"<td><input type=\"checkbox\" name=\"Autologin\" value=\"1\">\n</td>";
        echo 
"</tr></table><br>\n";
        echo 
"<input type=\"submit\" name=\"submit\" value=\"Log in\">\n";
        echo 
"<br>\n";
        echo 
"<a class=\"link\" href=\"pwch.php\">Forgot password</a> or not <a class=\"link\" href=\"register.php\">registered</a> yet?\n";
        echo 
"</form>\n";
    }
?>


Lass uns das Ergebnis bitte wissen ;)


Profil ansehen Mail senden
19.08.2008 18:57 Uhr
gizzy2k7
User
 
registriert 18.08.2008
wohnt in
Beiträge 4
Hat einwandfrei funktioniert!
Ich danke dir für dein tolles tut und deine schnelle hilfe!!:mygod:

Hätte da noch ne kleine Optikfrage:

Woher kommt dieser freiraum



PHP:
 
<?php   
echo "<strong>Register with Server</strong><br />\n";
    echo 
"<form name=\"Registrierung\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\" accept-charset=\"ISO-8859-1\">\n";
    echo 
"<table border=\"0\"><tr><td>Nickname:\n</td>";
    echo 
"<td><input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n</td>";
    echo 
"</tr><br>\n";
    echo 
"<tr><td>\nPassword:\n</td>";
    echo 
"<td><input type=\"password\" name=\"Passwort\">\n</td>";
    echo 
"</tr><br>\n";
    echo 
"<tr><td>\nRepeat password:\n</td>";
    echo 
"<td><input type=\"password\" name=\"Passwortwiederholung\">\n</td>";
    echo 
"</tr><br>\n";
    echo 
"<tr><td>\nEmail:\n</td>";
    echo 
"<td><input type=\"text\" name=\"Email\" maxlength=\"70\">\n</td>";
    echo 
"</tr><br>\n";
    echo 
"</table><br>\n";
    echo 
"<input type=\"submit\" name=\"submit\" value=\"Register\">\n";
    echo 
"<input type=\"reset\" value=\"Clear\">\n";
    echo 
"</form>\n";
?>


Dieser Beitrag wurde am 19.08.2008 um 19:28:53 Uhr von gizzy2k7 zum 2. Mal editiert.
Profil ansehen
19.08.2008 21:35 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
gib mal allen Elementen
padding:0px;
margin:0px;

und der Tabelle außerdem
cellpadding=0
cellspacing=0

und nimm das <br /> in der ersten Zeile raus, das macht semantisch nich so viel sinn vor nem Blockelement ;)


Profil ansehen Mail senden
20.08.2008 02:26 Uhr
gizzy2k7
User
 
registriert 18.08.2008
wohnt in
Beiträge 4
keine änderung :(
Profil ansehen
Seite: <  1 2 3 4 no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik