php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.08.2005, 10:40  
Erfahrener Benutzer
 
Registriert seit: 07.04.2005
Beiträge: 184
LA-Finest
Standard problem mit session

hi @ all,

hab ein problem mit meiner session! Sie sagt jedes mal wenn ich den richtigen user un pw eingeb, dass ein loginfehler aufgetreten ist, obwohl alles stimmt. auf den geschützten bereich komm ich nicht, ohne einloggen und dies geht ja nicht

evtl. könnt ihr helfen!

hier der code:

PHP-Code:
<?php
session_start
();

/*
error_reporting(E_ALL);
    echo "<pre>\n";
    var_dump($_POST);
    echo "</pre>\n";

*/


//if ($_POST['einloggen'])
//{

      
if( isset($_POST['username'], $_POST['password']))
       
// AND
        //strcmp(trim($_POST['username']),'') != 0
        //AND
        //strcmp(trim($_POST['username']),'') != 0 )
      
{


          
// Einbinden der Konfigurationsdatei
          
include_once 'config.inc.php';

          
// Erstellen der Verbindung zur MySQL-Datenbank
        
$db mysql_connect($_config['host'], $_config['user'], $_config['password']);

        
mysql_select_db($_config['database']);
        

          
// SQL-Anweisung an die Datenbank senden, um erstens herauszufinden, ob
          // diese Kombination von Usernamen und Passwort überhaupt existiert und
          // zweitens bei Existenz Userinformationen auszulesen
          
$sql "SELECT ID, anzahlLogins FROM archiv_login1
                  WHERE username = '" 
trim($_POST['username']) . "'
                  AND   password = '" 
md5(trim($_POST['password'])) . "'";

          
$res mysql_query($sql) or die( 'Error[SELECT|User]: 

                                                           <pre>' 
$sql '</pre>
                                                           

                                                           MySQL-Error: ' 
mysql_error() );

          
// Nur wenn genau ein Datensatz selektiert wurde wird der User eingeloggt.
          // In allen anderen Fällen wird er zurück zum Loginformular geleitet.
          
if( mysql_num_rows($res) != )
          {
              
header'Location: http://p31276:1080/~d043622/php/Page_aktuell/loginfehler.html' );
              exit();
          }
          else
          {
             
// Der Schlüssel 'loggedIn' erhält den Wert 'true'. So kann überprüft später werden,
             // ob der User eingeloggt ist oder nicht.
             
$_SESSION['loggedIn'] = true;

             
// Die userspezifischen Daten werden ausgelesen und der Session hinzugefügt
             
$user mysql_fetch_object($res);
             
$_SESSION['anzahlLogins'] = $user->anzahlLogins;
             
$_SESSION['ID'] = $user->ID;

             
// Aktualisierung des Anzahl der Logins
             
$sql 'UPDATE archiv_login1
                     SET anzahlLogins = anzahlLogins + 1
                     WHERE ID = ' 
$user->ID;

             
mysql_query($sql) or die( 'Error[UPDATE|User]: 

                                                          <pre>' 
$sql '</pre>
                                                          

                                                          MySQL-Error: ' 
mysql_error() );

             
// Der Login war erfolgreich und der User wird zur Startseite des
             // passwortgeschützen Bereichs weitergeleitet
             
header'Location: http://p31276:1080/~d043622/php/Page_aktuell/administration.php' );
             exit();
          }

    }
    else {
          
header'Location: http://p31276:1080/~d043622/php/Page_aktuell/login.php' );
          exit();
         }
    
mysql_close($db);
//}
?>
*anmerkung dazu: wenn ich das ausgeklammerte wieder einklammer geht gar nichts mehr!

gruß la-finest
__________________
Eine Programmiersprache kann man nicht perfekt beherrschen,
nur gut.
Ansonsten hätte man sie erfunden!

www.bazubi.com/forum --> allgem. IT-Forum
LA-Finest ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.08.2005, 10:46  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard

Zeig dochmal das HTML-Formular dazu..
Chr!s ist offline  
Alt 18.08.2005, 10:50  
Erfahrener Benutzer
 
Registriert seit: 07.04.2005
Beiträge: 184
LA-Finest
Standard

ok kommt ...
hier:



Code:
...
  
  <div id='Login'>
  <h3>Login</h3>
  <form action='einloggen.php' method='post'>
  <table>
    <tr>
        <td>Username </td><td><input type='text' name='username' size='8'></td>
    </tr>
    <tr>
        <td>Passwort </td><td><input type='password' name='password' size='8'></td>
    </tr>
    <tr >
        <td> <input type='submit' name='einloggen' value='  Login  '></td><td><input type='reset' value=' Reset '></td>
    </tr>
  </table>
  </form>
  </div>
...
__________________
Eine Programmiersprache kann man nicht perfekt beherrschen,
nur gut.
Ansonsten hätte man sie erfunden!

www.bazubi.com/forum --> allgem. IT-Forum
LA-Finest ist offline  
Alt 18.08.2005, 11:52  
Erfahrener Benutzer
 
Registriert seit: 08.05.2005
Beiträge: 814
andy
andy eine Nachricht über ICQ schicken
Standard

Ich zähl nur mal ein paar Sachen auf:

1. error_reporting einschalten!
2. if( isset($_POST['username']) && isset($_POST['password']))
3. mysql_real_escape_string
4. $config
5. bei dem Query hast du "or die..." verwendet, warum nicht bei mysql_connect?

Mach das mal dann sehen wir weiter
__________________
Zitat:
Diese Erweiterung ist EXPERIMENTELL.
[...]
Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..
andy ist offline  
Alt 18.08.2005, 12:15  
Erfahrener Benutzer
 
Registriert seit: 07.04.2005
Beiträge: 184
LA-Finest
Standard

so habs so weit mal gemacht, jetzt kommt der fehler wenn ich die mysql_real_escape_string funktion einbau (ich denke ich ab sie falsch angewendet und positioniert )
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /home/d043622/public_html/php/Page_aktuell/einloggen.php on line 40


line 40 und umgebung sieht so aus
PHP-Code:
<?php
        $sql 
"SELECT ID, anzahlLogins FROM archiv_login1
                  WHERE username = '" 
trim($_POST['username']) . "'
                  AND   password = '" 
md5(trim($_POST['password'])) . "'
                  mysql_real_escape_string($_POST['username']),   //<--- zeie 40 
                  mysql_real_escape_string($_POST['password'])"
;

          
$res mysql_query($sql) or die( 'Error[SELECT|User]: 

                                                           <pre>' 
$sql '</pre>
                                                           

                                                           MySQL-Error: ' 
mysql_error() );


?>
wenn ich das mit den mysql_real_escape_string rauslass, komm immer der fehler:

Warning: Cannot add header information - headers already sent by (output started at /home/d043622/public_html/php/Page_aktuell/einloggen.php:6) in /home/d043622/public_html/php/Page_aktuell/einloggen.php on line 53

tja der header in line 53 sieht so aus:

PHP-Code:
<?php
// Nur wenn genau ein Datensatz selektiert wurde wird der User eingeloggt.
          // In allen anderen Fällen wird er zurück zum Loginformular geleitet.
          
if( mysql_num_rows($res) != )
          {
              
header'Location: http://p31276:1080/~d043622/php/Page_aktuell/loginfehler.html' );
              exit();
          }
...

?>
und mit dem $config hab ich nicht verstanden was du damit willst, sry.!

so ansonsten alles so gut es geht eingebaut ;-D
__________________
Eine Programmiersprache kann man nicht perfekt beherrschen,
nur gut.
Ansonsten hätte man sie erfunden!

www.bazubi.com/forum --> allgem. IT-Forum
LA-Finest ist offline  
Alt 18.08.2005, 13:09  
Erfahrener Benutzer
 
Registriert seit: 08.05.2005
Beiträge: 814
andy
andy eine Nachricht über ICQ schicken
Standard

PHP-Code:
<?php
        $sql 
"SELECT ID, anzahlLogins FROM archiv_login1
                  WHERE username = '" 
mysql_real_escape_string(trim($_POST['username'])) . "'
                  AND   password = '" 
md5(trim($_POST['password'])) . "';
?>
Vor header() darf KEINE Ausgabe erfolgen.


$_XYZ sind Superglobale{$_SESSION, $_POST, $_GET, ....}
Also nich verwenden....

$XYZ
__________________
Zitat:
Diese Erweiterung ist EXPERIMENTELL.
[...]
Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..
andy ist offline  
Alt 18.08.2005, 14:13  
Erfahrener Benutzer
 
Registriert seit: 07.04.2005
Beiträge: 184
LA-Finest
Standard

so hab jetzt diese convention von $_xyz zu $xyz durgeführt

aver er bringt mir immer noch den selbern fehler:
Warning: Cannot add header information - headers already sent by (output started at /home/d043622/public_html/php/Page_aktuell/einloggen.php:6) in /home/d043622/public_html/php/Page_aktuell/einloggen.php on line 53

und hier ist nochmal mein quelltext:

PHP-Code:
<?php

session_start
();


error_reporting(E_ALL);
    echo 
"<pre>\n";
    
var_dump($_POST);
    echo 
"</pre>\n";




//if ($einloggen)
//{

      
if( isset($username) && isset($password))
       
// AND
        //strcmp(trim($_POST['username']),'') != 0
        //AND
        //strcmp(trim($_POST['username']),'') != 0 )
      
{


          
// Einbinden der Konfigurationsdatei
          
include_once 'config.inc.php';

          
// Erstellen der Verbindung zur MySQL-Datenbank
        
$db mysql_connect($config['host'], $config['user'], $config['password'])
        or die(
'<pre>'mysql_error().'</pre>' );

        
mysql_select_db($config['database']);
        

          
// SQL-Anweisung an die Datenbank senden, um erstens herauszufinden, ob
          // diese Kombination von Usernamen und Passwort überhaupt existiert und
          // zweitens bei Existenz Userinformationen auszulesen
          
$sql "SELECT ID, anzahlLogins FROM archiv_login1
                  WHERE username = '" 
trim($username) . "'
                  AND   password = '" 
md5(trim($password)) . "'"
               
//   mysql_real_escape_string($_POST['username']),
               //   mysql_real_escape_string($_POST['password'])"
               
;

          
$res mysql_query($sql) or die( 'Error[SELECT|User]: 

                                                           <pre>' 
$sql '</pre>
                                                           

                                                           MySQL-Error: ' 
mysql_error() );

          
// Nur wenn genau ein Datensatz selektiert wurde wird der User eingeloggt.
          // In allen anderen Fällen wird er zurück zum Loginformular geleitet.
          
if( mysql_num_rows($res) != )
          {
              
header"Location: http://p31276:1080/~d043622/php/Page_aktuell/loginfehler.html" );
              exit();
          }
          else
          {
             
// Der Schlüssel 'loggedIn' erhält den Wert 'true'. So kann überprüft später werden,
             // ob der User eingeloggt ist oder nicht.
             
$_SESSION['loggedIn'] = true;

             
// Die userspezifischen Daten werden ausgelesen und der Session hinzugefügt
             
$user mysql_fetch_object($res);
             
$_SESSION['anzahlLogins'] = $user->anzahlLogins;
             
$_SESSION['ID'] = $user->ID;

             
// Aktualisierung des Anzahl der Logins
             
$sql 'UPDATE archiv_login1
                     SET anzahlLogins = anzahlLogins + 1
                     WHERE ID = ' 
$user->ID;

             
mysql_query($sql) or die( 'Error[UPDATE|User]: 

                                                          <pre>' 
$sql '</pre>
                                                          

                                                          MySQL-Error: ' 
mysql_error() );

             
// Der Login war erfolgreich und der User wird zur Startseite des
             // passwortgeschützen Bereichs weitergeleitet
             
header'Location: http://p31276:1080/~d043622/php/Page_aktuell/administration.php' );
             exit();
          }

    }
    else {
          
header'Location: http://p31276:1080/~d043622/php/Page_aktuell/login.php' );
          exit();
         }
    
mysql_close($db);
//}

?>
__________________
Eine Programmiersprache kann man nicht perfekt beherrschen,
nur gut.
Ansonsten hätte man sie erfunden!

www.bazubi.com/forum --> allgem. IT-Forum
LA-Finest ist offline  
Alt 18.08.2005, 14:27  
Erfahrener Benutzer
 
Registriert seit: 08.05.2005
Beiträge: 814
andy
andy eine Nachricht über ICQ schicken
Standard

echo "<pre>\n";
var_dump($_POST);
echo "</pre>\n";

->KEINE Ausgaben vor header()!
__________________
Zitat:
Diese Erweiterung ist EXPERIMENTELL.
[...]
Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..
andy ist offline  
Alt 18.08.2005, 14:47  
Erfahrener Benutzer
 
Registriert seit: 07.04.2005
Beiträge: 184
LA-Finest
Standard

ich weiß nicht wo der fehler liegt. hab jetzt auch das error reporting all auskommentiert aber wenn ich die richtigen login daten eingebe werde ich immer auf mein loginfehler geleitet.

warum ich raff das jetzt einfach net, dachte es lag an dem $_xyz aber so wie es aussieht wars das doch nicht.

hab auch mal alle ausgaben selbst die or di auskommentiert, und es funzt troztdem nicht. An was kann denn das liegen.
__________________
Eine Programmiersprache kann man nicht perfekt beherrschen,
nur gut.
Ansonsten hätte man sie erfunden!

www.bazubi.com/forum --> allgem. IT-Forum
LA-Finest ist offline  
Alt 18.08.2005, 14:50  
Erfahrener Benutzer
 
Registriert seit: 08.05.2005
Beiträge: 814
andy
andy eine Nachricht über ICQ schicken
Standard

Poste bitte was du hast, auch die Config-Datei (mit * versteht sich)
__________________
Zitat:
Diese Erweiterung ist EXPERIMENTELL.
[...]
Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..
andy ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Session Problem karina_02 PHP Tipps 2008 6 18.05.2008 22:37
Problem bei session Lifetime Cyberbob_at_tot PHP Tipps 2007 5 05.06.2007 17:47
Problem mit Session Charly Shop Sui PHP Tipps 2006 13 25.08.2006 17:08
Und noch ein Session Problem... Weyoun PHP Tipps 2006 9 27.02.2006 22:17
Problem mit Firefox und Session PHP Tipps 2005-2 5 25.08.2005 01:14
Session wieder aufnehmen; Problem mit GET Jacks Rache PHP-Fortgeschrittene 9 12.08.2005 14:32
[Erledigt] Problem mit Session PHP Tipps 2005-2 1 06.08.2005 19:07
Problem mit Session PHP Tipps 2005-2 13 10.07.2005 18:20
seltsames php und session problem netti PHP-Fortgeschrittene 16 01.06.2005 17:01
[Erledigt] Hilfe...PhpBB Session Problem!! PHP Tipps 2004-2 2 15.12.2004 18:28
Session Problem beim Login PHP Tipps 2004-2 6 15.12.2004 09:37
problem mit ner Session, es gehn Arrays verloren PHP-Fortgeschrittene 3 10.11.2004 18:01
[Erledigt] PHP Session Problem, dringend! PHP-Fortgeschrittene 17 21.10.2004 21:15
Session wird falsch wieder aufgenommen - Problem mit Session PHP Tipps 2004 2 16.10.2004 14:30
session problem PHP Tipps 2004 2 22.07.2004 08:39


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.