Logo - MyWebsolution.de
User gesamt  :  2459868
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 5 6 7  > Posts pro Seite: 5 10 20
Autor Thread
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
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