Logo - MyWebsolution.de
User gesamt  :  2315881
User online  :  2
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 Posts pro Seite: 5 10 20
Autor Thread
20.02.2007 20:48 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
naja, das ist ein bisschen schwer, weil wir deine Seiten ja nicht kennen :P

Grundsätzlich gibts es ein "da gehts, da nicht" eigentlich nicht... D.h. in der Datei, wo es nicht geht, muss irgendwas passieren (vllt keine Session gestartet, Session hatte nen timeout, kA..)


Profil ansehen Mail senden
20.02.2007 20:57 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
Ich kann mir dass selbst nicht erklären... Wüsste nicht wo der Fehler sein würde... Aber ich geb euch jetzt nicht den ganzen Quellcode zum durchlesen, mach einfach ne kopie von den seiten bei denen es geht, und ändere sie dann entsprechend wieder ab.
Profil ansehen
24.12.2007 12:10 Uhr
Braini
User
 
registriert 24.12.2007
wohnt in
Beiträge 4
Hallo zusammen,
dieser Thread ist vielleicht schon etwas älter, aber ich habe ihn gerade erst gesehen.
Erst einmal ein großes Lob an Flitze für seine Mühen.
Jetzt habe ich auch folgendes Problem beim Login.
Es funktioniert soweit alles, nur binde ich das Script per include auf eine Seite ein, in der vorher schon HTML ausgegeben wird.
Das Problem habe ich nur, wenn "eingelogged bleiben" aktiviert ist, dann erscheint folgende Fehlermeldung:
"Warning: Cannot modify header information - headers already sent by (output started at..."
Es wird wahrscheinlich an dem setcookie liegen, ich habe allerdings keine Lösung des Problems parat ;(
Wie binde ich nun mein Loginscript in ein schon existierendes Layout ein, so dass alles funktioniert?
Ich hoffe, es kann mir jemand helfen.
Viele Grüße und ein frohes Fest
Braini
Profil ansehen
24.12.2007 14:08 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Halle Braini,
danke für dein Lob, hört man immer wieder gern :)

Zu deinem Problem:
Ich denke mal, du benutzt so etwas wie eine zentrale "index.php" und bindest dann deine Unterseiten über "index.php?seite=news" oder so ein. Korrigier mich, wenn ich falsch liege ;). In diesem Fall müsstest du den login ganz oben - d.h. vor jeder HTML-Ausgabe - in dieser index.php inkludieren. Bei mir sieht das so aus:

Inhalt einer index.php

PHP:
<?php
    error_reporting
(E_ALL);

    
// Session starten
    
ini_set('session.use_trans_sid'1);
    
session_start();

// Unterscripte inkludieren
include "inc/constants.php";
include 
"inc/mysql/mysql_connect.php";
include 
"inc/functions.php";
include 
"inc/user_statistik.php";
// Login-Script inkludieren
include "inc/login.php";

// Start der HTML-Ausgabe
    
echo "<!DOCTYPE HTML PUBLIC\"-//W3C//DTD HTML 4.01//EN\"\n";
    echo 
"         \"http://www.w3.org/TR/html4/strict.dtd\">\n";
    echo 
"<html>\n";
    echo 
"<head>\n";
    
//...
?>


Die Datei login.php im Ordner inc hat folgenden Inhalt:

PHP:
<?php
    error_reporting
(E_ALL);

    
// Loginbereich
    
if(isset($_GET['section']) AND $_GET['section']=='logout'){
        
// User ausloggen
        
doLogout();
        
// $_SESSION leeren
        
$_SESSION = array();
        
// Session löschen
        
session_destroy();
    }
    if(isset(
$_POST['submit']) AND $_POST['submit']=='Einloggen'){
        
// Falls der Nickname und das Passwort übereinstimmen..
        
$sql "SELECT
                        ID
                FROM
                        User
                WHERE
                        Nickname = '"
.mysql_real_escape_string($_POST['Nickname'])."' AND
                        Passwort = '"
.MD5(mysql_real_escape_string($_POST['Passwort']))."'
               "
;
        
$result mysql_query($sql);
        
// wird die ID des Users geholt und der User damit eingeloggt
        
$row mysql_fetch_assoc($result);
        if (
mysql_num_rows($result)==1)
            
doLogin($row['ID'], isset($_POST['Autologin']));
    }
?>


Der Login selbst ist ein Formular, das auf jeder Unterseite in der linken Navigationsspalte angezeigt wird (siehe www.sg-wehretal.de). Wenn ein User jetzt Nickname und Passwort ausfüllt und auf Einloggen klickt, dann wird der Code aus der login.php, der in der index.php inkludiert wird, ausgeführt.

Ich hoffe, das hilft dir weiter, ansonsten müsstest du vllt mal die Struktur deine Skripte (was wo wie inkludiert) näher erläutern ;)

Gruß und frohes Fest
Flitze


Profil ansehen Mail senden
25.12.2007 10:47 Uhr
Braini
User
 
registriert 24.12.2007
wohnt in
Beiträge 4
Hallo Flitze,
da muss ich dich korrigieren, von der index.php verweist der Link auf die login.php (gleiches Aussehen-anderer Inhalt)

Hier mal meine Dateien:

login.php

PHP:
<?php
session_start
();
include 
"_includes/config.php";
include 
"_includes/function_dologin.php";
?>
<html>
<head>
<title>SportSofort</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>...
<td valign="top" width="634" bgcolor="#fafafa" style="padding-top:10px; padding-bottom:6px; padding-left:5px">
<?php

if(isset($_POST['submit']) AND $_POST['submit']=='Einloggen'){
        
// 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";
        }
    }else {
echo 
"<form ".
             
" name=\"Login\" ".
             
" action=\"".$_SERVER['PHP_SELF']."\" ".
             
" method=\"post\" ".
             
" accept-charset=\"ISO-8859-1\">\n";
        echo 
"Nickname :\n";
        echo 
"<input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n";
        echo 
"<br>\n";
        echo 
"Passwort :\n";
        echo 
"<input type=\"password\" name=\"Passwort\">\n";
        echo 
"<br>\n";
        echo 
"eingeloggt bleiben :\n";
        echo 
"<input type=\"checkbox\" name=\"Autologin\" value=\"1\">\n";
        echo 
"<br>\n";
        echo 
"<input type=\"submit\" name=\"submit\" value=\"Einloggen\">\n";
        echo 
"<br>\n";
        echo 
"<a href=\"passwort.php\">Passwort vergessen</a> oder noch nicht <a href=\"register.php\">registriert</a>?\n";
        echo 
"</form>\n";
}
?> 
      </td> ...
</body>...


Hier nun meine function_dologin.php

PHP:

<?php 
    
// 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'];
    }   
?> 


Nun noch die Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\sportsofort\_includes\function_dologin.php:5 3) in C:\xampp\htdocs\sportsofort\_includes\function_dologin.php on line 25

Ich hoffe, du kannst damit etwas anfangen.
Die php wird innnerhalb des <td> eingebunden, damit sie zum Design passt.
Es gibt auch nur ein Loginformular.

Schon mal Danke im voraus.
Grüße
Braini
Profil ansehen
25.12.2007 11:12 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Jo, also das liegt schon an dem Cookie, das gesetzt wird. Du musst den Login an den Anfang des Scriptes setzen. Für die Ausgabe überprüfst du dann einfach, ob $_SESSION['UserID'] gesetzt wurde. Also so (ungetestet):

PHP:
<?php
session_start
();
include 
"_includes/config.php";
include 
"_includes/function_dologin.php";
if(isset(
$_POST['submit']) AND $_POST['submit']=='Einloggen'){
        
// 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']));
        }
}
?>
<html>
<head>
<title>SportSofort</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>...
<td valign="top" width="634" bgcolor="#fafafa" style="padding-top:10px; padding-bottom:6px; padding-left:5px">
<?php
        
if(isset($_SESSION['UserID'])){
             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";
        }
    }else {
echo 
"<form ".
             
" name=\"Login\" ".
             
" action=\"".$_SERVER['PHP_SELF']."\" ".
             
" method=\"post\" ".
             
" accept-charset=\"ISO-8859-1\">\n";
        echo 
"Nickname :\n";
        echo 
"<input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n";
        echo 
"<br>\n";
        echo 
"Passwort :\n";
        echo 
"<input type=\"password\" name=\"Passwort\">\n";
        echo 
"<br>\n";
        echo 
"eingeloggt bleiben :\n";
        echo 
"<input type=\"checkbox\" name=\"Autologin\" value=\"1\">\n";
        echo 
"<br>\n";
        echo 
"<input type=\"submit\" name=\"submit\" value=\"Einloggen\">\n";
        echo 
"<br>\n";
        echo 
"<a href=\"passwort.php\">Passwort vergessen</a> oder noch nicht <a href=\"register.php\">registriert</a>?\n";
        echo 
"</form>\n";
}
?> 
      </td> ...
</body>...


$_SESSION['UserID'] wird ja nur dann gesetzt, wenn der Login erfolgreich war, ansonsten existiert dieser Key im $_SESSION-Array gar nicht.

Dieser Beitrag wurde am 25.12.2007 um 11:13:17 Uhr von Flitze zum 1. Mal editiert.


Profil ansehen Mail senden
25.12.2007 11:37 Uhr
Braini
User
 
registriert 24.12.2007
wohnt in
Beiträge 4
Hallo Flitze,

das hat leider auch nicht funktioniert ;(
weiterhin folgende Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\sportsofort\_includes\function_dologin.php:5 3) in C:\xampp\htdocs\sportsofort\_includes\function_dologin.php on line 25

Desweiteren ein unexpected T_Else, aber das Problem ist behoben.
Profil ansehen
25.12.2007 15:15 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Seltsam, ich habs gerade bei mir getestet und bekomme keine Fehlermeldung..

Also, zum einen könnte es an der config.php liegen, weil ich deren Inhalt nicht kenne (kannste ja mal posten) zum anderen könnte es sein, dass du in der function_login.php eine Leerzeile über dem <?php hast, musste mal überprüfen. Leerzeilen außerhalb von PHP-Code, also außerhalb von <?php ... ?> werden trotzdem als (HTML-)Ausgabe betrachtet.

Und poste bitte nochmal deinen bisherigen Code.


Profil ansehen Mail senden
25.12.2007 18:40 Uhr
Braini
User
 
registriert 24.12.2007
wohnt in
Beiträge 4
Hallo Flitze,

hier meine login.php

PHP:

<?php
session_start
();
include 
"_includes/function_dologin.php";
include 
"_includes/config.php";
include 
"_includes/autologin.php";
include 
"_includes/logout.php";

if(isset(
$_POST['submit']) AND $_POST['submit']=='Einloggen'){
        
// 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']));
        }
}
?>
<html>
<head>
<title>SportSofort</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
</script>
<link rel="stylesheet" href="sportsofort.css">
</head>

<body bgcolor="fafafa" background="bg_neu.gif" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="5" onLoad="MM_preloadImages('images/b_forum_2.png','images/b_fahrerlager_2.png','images/b_rennserien_2.png','images/b_rfactor_2.png','images/b_gtr2_2.png','images/b_race07_2.png','images/b_downloads_2.png','images/b_lackhalle_2.png')">
<div align="center">
  <table width="1024" border="0" cellspacing="0" cellpadding="0">
    <tr> 
      <td colspan="3" height="109" valign="top" background="images/head.png"> 
        <table width="100%" border="0" cellspacing="0" cellpadding="0">
          <tr> 
            <td> 
              <div align="right"><span class="text"><?php if(isset($_SESSION['UserID'])) echo "<a href=\"edituser.php?ID=".$_SESSION['Nickname']."\" class=\"link\">" .$_SESSION['Nickname']."</a>  | <a href='logout.php' target='_self' class='link'>Logout</a> |" ; else echo "<a href='login.php' target='_self' class='link'>Login</a> |" ;?></span> 
                <a href="register.php" target="_self" class="link">Registrieren</a>&nbsp;&nbsp;&nbsp; 
              </div>
            </td>
          </tr>
        </table>
      </td>
    </tr>
    <tr valign="middle"> 
      <td colspan="3" height="29" style="padding-top:5px; padding-left:5px" background="images/b_bg.png"><a href="#"><img src="images/b_start_2.png" width="80" height="22" border="0" alt="Start" name="start"></a><a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('forum','','images/b_forum_2.png',1)"><img src="images/b_forum_1.png" width="80" height="22" name="forum" alt="Forum" border="0"></a><a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('fahrerlager','','images/b_fahrerlager_2.png',1)"><img src="images/b_fahrerlager_1.png" width="80" height="22" name="fahrerlager" alt="Fahrerlager" border="0"></a><a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('rennserien','','images/b_rennserien_2.png',1)"><img src="images/b_rennserien_1.png" width="80" height="22" name="rennserien" alt="Rennserien" border="0"></a><a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('rfactor','','images/b_rfactor_2.png',1)"><img src="images/b_rfactor_1.png" width="80" height="22" name="rfactor" alt="rFactor" border="0"></a><a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('gtr2','','images/b_gtr2_2.png',1)"><img src="images/b_gtr2_1.png" width="80" height="22" name="gtr2" alt="GTR 2" border="0"></a><a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('race07','','images/b_race07_2.png',1)"><img src="images/b_race07_1.png" width="80" height="22" name="race07" alt="Race 07" border="0"></a><a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('downloads','','images/b_downloads_2.png',1)"><img src="images/b_downloads_1.png" width="80" height="22" name="downloads" alt="Downloads" border="0"></a><a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('lackhalle','','images/b_lackhalle_2.png',1)"><img src="images/b_lackhalle_1.png" width="80" height="22" name="lackhalle" alt="Lackhalle" border="0"></a></td>
    </tr>
    <tr> 
      <td valign="top" width="195" bgcolor="#FFFFFF" style="padding-top:6px; padding-bottom:6px; padding-left:5px"> 
        <table width="183" border="0" cellspacing="0" cellpadding="0">
          <tr> 
            <td style="padding-top:6px"><img src="images/head_news.png" width="183" height="31"></td>
          </tr>
          <tr background="images/middle_news.png"> 
            <td style="padding-right:4px; padding-left:4px" class="linkimText"><span class="datumnews">21.12.2007<br>
              </span><span class="text">Hier stehen die News drin</span><br>
              <br>
              <a href="#" class="link">Endlich geht SportSofort online, ohne viel 
              Schnick und Schnack und mit...<br>
              </a> 
              <div align="center"><span class="text">..........................................</span></div>
            </td>
          </tr>
          <tr valign="bottom"> 
            <td><img src="images/bottom_news.png" width="183" height="10"></td>
          </tr>
        </table>
      </td>
      <td valign="top" width="634" bgcolor="#fafafa" style="padding-top:10px; padding-bottom:6px; padding-left:5px">
<?php
        
if(isset($_SESSION['UserID'])){
             echo 
"<h4>Willkommen ".$_SESSION['Nickname']."</h4>\n";
             echo 
"Sie wurden erfolgreich eingeloggt.<br>\n".
                  
"Zur <a href=\"index.php\">Startseite</a>\n";
        }
        else {
                  echo 
"<form ".
             
" name=\"Login\" ".
             
" action=\"".$_SERVER['PHP_SELF']."\" ".
             
" method=\"post\" ".
             
" accept-charset=\"ISO-8859-1\">\n";
        echo 
"Nickname :\n";
        echo 
"<input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n";
        echo 
"<br>\n";
        echo 
"Passwort :\n";
        echo 
"<input type=\"password\" name=\"Passwort\">\n";
        echo 
"<br>\n";
        echo 
"eingeloggt bleiben :\n";
        echo 
"<input type=\"checkbox\" name=\"Autologin\" value=\"1\">\n";
        echo 
"<br>\n";
        echo 
"<input type=\"submit\" name=\"submit\" value=\"Einloggen\">\n";
        echo 
"<br>\n";
        echo 
"<a href=\"passwort.php\">Passwort vergessen</a> oder noch nicht <a href=\"register.php\">registriert</a>?\n";
        echo 
"</form>\n";
}
?> 
      </td>
      <td width="195" valign="top" bgcolor="#FFFFFF" style="padding-top:6px; padding-bottom:6px; padding-left:5px"> 
        <table width="191" border="0" cellspacing="0" cellpadding="0">
          <tr> 
            <td style="padding-top:6px"><img src="images/head_ergebnisse.png" width="191" height="35"></td>
          </tr>
          <tr background="images/middle_ergebnisse.png"> 
            <td style="padding-right:8px; padding-left:8px" class="linkimText"><span class="datumnews">21.12.2007<br>
              </span><span class="text">Hier stehen die News drin</span><br>
              <br>
              <a href="#" class="link">Endlich geht SportSofort online, ohne viel 
              Schnick und Schnack und mit...<br>
              </a> 
              <div align="center"><span class="text">..........................................</span></div>
            </td>
          </tr>
          <tr valign="bottom"> 
            <td><img src="images/bottom_ergebnisse.png" width="191" height="10"></td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
</div>
</body>
</html>



und meine function_dologin.php

PHP:

<?php 
    
// 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'];
    }
?> 


und hier noch meine config.php

PHP:

<?php
    $MYSQL_HOST 
'localhost';
    
$MYSQL_USER 'root';
    
$MYSQL_PASS '';
    
$MYSQL_DATA 'dbname';

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


So, das sind meine Dateien, die ich für den Login benötige.
Ich habe auch überprüft, ob eine Leerzeile/-zeichen davor steht, nix.

Grüße
Braini
Profil ansehen
27.12.2007 13:22 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Ich hab jetzt den Quellcode, so wie er da steht, übernommen und bekomme keine Fehlermeldung.. Aber der Fehler ist ja eigentlich auch eindeutig

Zitat:
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\sportsofort\_includes\function_dologin.php:5 3) in C:\xampp\htdocs\sportsofort\_includes\function_dologin.php on line 25


Also wurde in der Datei function_dologin eine Ausgabe gemacht. Es kann nur an dieser Datei liegen. Zum überprüfen ruf die Datei (function_dologin.php) einfach mal direkt auf (localhost/sportsofort/_includes/function_dologin.php )und schau dir den Quellcode an. Ich hatte eben beim Testen den gleichen Fehler bekommen - Allerdings hatte ich auch einen Zeilenumbruch vor dem <?php

Wenn du wirklich definitiv keine Zeilenumbrüche/leerzeichen vor dem <?php hast, dann gibt mir mal bitte deine Email-Adresse und ich schicke dir die Datei, die bei mir funktioniert.


Profil ansehen Mail senden
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 no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik