php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.10.2005, 08:17  
Gast
 
Beiträge: n/a
Standard Session - Nach einloggen aktualisieren damit Einlog erfolg

Tach

hab nen Prob, und zwar, wenn ich mich einlogge, dann muss ich erst nochmal aktualisieren damit er auch wiklich einloggt. Das heist, ich geb meinen Benutzername ein und PW, klick auf "einloggen" und dann zeigt er nicht die Seiten an die eigentlich da sein sollten (da die Rechte nicht stimmen). Aber sobald ich die Seite aktualisier klappt alles ganz normal.

Hier Code:

PHP-Code:
<?php
    
// error_reporting(E_ALL);
    
session_start();
    if (isset(
$_GET['action']) AND $_GET['action'] == "logout") { 
        
session_destroy(); 
        
header("Location: index.php");
    }
    include 
'inc/config.php';

    @
mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
    
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

    
$rights getRights();
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title><?php echo $title?></title>
</head>
<body>

<htmlzeug>

       <?php
           
if(!in_array("admin"$rights)) {
               echo 
"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n";
               echo 
" <tr height=\"16\">\n";
               echo 
"  <td background=\"gfx/design/menu_off.jpg\">\n";
               echo 
"        [b]Login &raquo;[/b]\n";
               echo 
"  </td>\n";
               echo 
" </tr>\n";
               echo 
"</table>\n";
           } else {
               include 
'menu.php';
           }
?>
function.php
PHP-Code:
<?php
    
function getRights($UID null) {
        if(isset(
$UID)) {
            
$sql "SELECT
                        recht
                    FROM
                        user_rights
                    WHERE
                       userid = '"
$UID ."';";
        } else {
            
$sql "SELECT
                        recht
                    FROM
                        user_rights
                    WHERE
                       userid = '"
$_SESSION['ID'] ."';";
        }        
$result mysql_query($sql) OR die(mysql_error());
        
$rights = array();
        while(
$row mysql_fetch_assoc($result)) {
            
$rights[] = $row['recht'];
        }
        return 
$rights;
    }
?>
Weiss jemand weiter?

MFG
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 04.10.2005, 08:25  
Erfahrener Benutzer
 
Registriert seit: 12.07.2004
Beiträge: 219
d-jango zeigte ein beschämendes Verhalten in der Vergangenheit
d-jango eine Nachricht über ICQ schicken
Standard

hmm...
wann führst du denn den Login durch?
Wenn das erst nach der Funktion getRights() passiert, würde ich das ganze einfach mal tauschen
__________________
http://www.fun2stay.de
d-jango ist offline  
Alt 04.10.2005, 08:57  
Gast
 
Beiträge: n/a
Standard

der login kommt danach, also in der index.php

PHP-Code:
<?php
    
// error_reporting(E_ALL);
    
session_start();
    if (isset(
$_GET['action']) AND $_GET['action'] == "logout") { 
        
session_destroy(); 
        
header("Location: index.php");
    }
    include 
'inc/config.php';

    @
mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
    
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

    
$rights getRights();
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title><?php echo $title?></title>
</head>
<body>

<htmlzeug>

       <?php
           
if(!in_array("admin"$rights)) {
               echo 
"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n";
               echo 
" <tr height=\"16\">\n";
               echo 
"  <td background=\"gfx/design/menu_off.jpg\">\n";
               echo 
"         [b]Login &raquo;[/b]\n";
               echo 
"  </td>\n";
               echo 
" </tr>\n";
               echo 
"</table>\n";
           } else {
               include 
'menu.php';
           }
?>

<htmlzeug>

<?php
    
if(!in_array("admin"$rights)) {
        include 
'login.php';
    } else {
        if(isset(
$_GET['seite']) AND isset($sections[$_GET['seite']])) {
            include 
$sections[$_GET['seite']];
        } elseif (!isset(
$_GET['seite'])) {
            include 
'welcome.php';
        } else {
            echo 
"<p class=\"error\">Fehler: Diese Seite wurde leider nicht gefunden!</p>\n";
        }
    }
?>
und die login.php
PHP-Code:
<?php
    
if(isset($_POST['UserID']) AND $_POST['UserID'] == '0') {
        echo 
"Keinen Benutzernamen ausgew&auml;hlt.\n";
    } else {
        if(isset(
$_POST['id'], $_POST['pw']) AND login_right(addslashes($_POST['id']), addslashes($_POST['pw']))) {
            
$_SESSION['ID'] = $_POST['id'];
            
$sql "SELECT
                        firma
                    FROM
                        user_anschrift
                    WHERE
                        user_id = "
$_POST['id'] .";";
            
$result mysql_query($sql) OR die(mysql_error());
            
$row mysql_fetch_assoc($result);
            
$_SESSION['firma'] = $row['firma'];
        }
        if(isset(
$_SESSION['ID'])) {
            
$rights getRights();
            if(
in_array("admin"$rights)) {
                
header("Location: index.php?".SID);
            }
        } else { 
           if (isset(
$_POST['submit'])) {
                 echo 
"    Ung&uuml;ltiges Password.\n";
            }
            
$sql "SELECT
                        ID,
                        name
                    FROM
                        users
                    ORDER BY
                        Name ASC;"
;
            
$result mysql_query($sql) OR die(mysql_error());
            echo 
"<form action=\"index.php\" method=\"post\">\n";
            echo 
"  <select size=\"1\" name=\"id\" id=\"id\" class=\"login\">\n";
            echo 
"    <option value=\"0\" selected>-- Bitte w&auml;hlen --</option>\n";
            while(
$row mysql_fetch_assoc($result)) {
                echo 
"    <option value=\"".$row['ID']."\">".$row['name']."</option>\n";
            }
            echo 
"  </select>\n";
            echo 
"  <input type=\"password\" name=\"pw\" id=\"pw\" style=\"font-size:8pt\">\n";
            echo 
"  <input type=\"submit\" name=\"submit\" value=\"Best&auml;tigen\" style=\"font-size:8pt\">\n";
            echo 
"  <input type=\"reset\" name=\"reset\" value=\"Abbrechen\" style=\"font-size:8pt\">\n";
            echo 
"</form>\n";
        }
    }
?>
 
Alt 04.10.2005, 10:43  
Erfahrener Benutzer
 
Registriert seit: 12.07.2004
Beiträge: 219
d-jango zeigte ein beschämendes Verhalten in der Vergangenheit
d-jango eine Nachricht über ICQ schicken
Standard

dann würd ich die login-routine von dem Login-Formular trennen.
Diese Login-Routine an den Anfang von deiner index.php setzen

--> so sollte dein Problem gelöst sein
__________________
http://www.fun2stay.de
d-jango ist offline  
Alt 04.10.2005, 11:14  
Gast
 
Beiträge: n/a
Standard

wie meinst des genau?

Btw, local funzt es ganz normal nur aufm Server nicht :/
 
Alt 04.10.2005, 11:46  
Erfahrener Benutzer
 
Registriert seit: 12.07.2004
Beiträge: 219
d-jango zeigte ein beschämendes Verhalten in der Vergangenheit
d-jango eine Nachricht über ICQ schicken
Standard

hmmm...

1.) du setzt folgende Zeilen an den anfang der index.php
PHP-Code:
<?php

session_start
();

if(isset(
$_POST['UserID']) AND $_POST['UserID'] == '0') {
        echo 
"Keinen Benutzernamen ausgew&auml;hlt.\n";
    } else {
        if(isset(
$_POST['id'], $_POST['pw']) AND login_right(addslashes($_POST['id']), addslashes($_POST['pw']))) {
            
$_SESSION['ID'] = $_POST['id'];
            
$sql "SELECT
                        firma
                    FROM
                        user_anschrift
                    WHERE
                        user_id = "
$_POST['id'] .";";
            
$result mysql_query($sql) OR die(mysql_error());
            
$row mysql_fetch_assoc($result);
            
$_SESSION['firma'] = $row['firma'];
        }
        if(isset(
$_SESSION['ID'])) {
            
$rights getRights();
            if(
in_array("admin"$rights)) {
                
header("Location: index.php?".SID);
            }
        } else { 
           if (isset(
$_POST['submit'])) {
                 echo 
"    Ung&uuml;ltiges Password.\n";
            } 

?>
2.) deine login.php sieht dann nur noch so aus ...
PHP-Code:
<?php

$sql 
"SELECT
                        ID,
                        name
                    FROM
                        users
                    ORDER BY
                        Name ASC;"
;
            
$result mysql_query($sql) OR die(mysql_error());
            echo 
"<form action=\"index.php\" method=\"post\">\n";
            echo 
"  <select size=\"1\" name=\"id\" id=\"id\" class=\"login\">\n";
            echo 
"    <option value=\"0\" selected>-- Bitte w&auml;hlen --</option>\n";
            while(
$row mysql_fetch_assoc($result)) {
                echo 
"    <option value=\"".$row['ID']."\">".$row['name']."</option>\n";
            }
            echo 
"  </select>\n";
            echo 
"  <input type=\"password\" name=\"pw\" id=\"pw\" style=\"font-size:8pt\">\n";
            echo 
"  <input type=\"submit\" name=\"submit\" value=\"Best&auml;tigen\" style=\"font-size:8pt\">\n";
            echo 
"  <input type=\"reset\" name=\"reset\" value=\"Abbrechen\" style=\"font-size:8pt\">\n";
            echo 
"</form>\n"

?>
__________________
http://www.fun2stay.de
d-jango ist offline  
Alt 04.10.2005, 13:42  
Gast
 
Beiträge: n/a
Standard

fettes danke funktioniert sogar :P

mfg
 
Alt 04.10.2005, 13:52  
Erfahrener Benutzer
 
Registriert seit: 12.07.2004
Beiträge: 219
d-jango zeigte ein beschämendes Verhalten in der Vergangenheit
d-jango eine Nachricht über ICQ schicken
Standard

haste was anderes erwartet??
__________________
http://www.fun2stay.de
d-jango ist offline  
Alt 04.10.2005, 14:01  
Gast
 
Beiträge: n/a
Standard

auf den ersten Blick hab ich net wirklich besserung erwartet. Blick grad auch net wirklich mehr durch. Aber das liegt nicht an dem Code etc sondern daran dass ich grad recht unkonzentriert bin. Dass die Frauen immer einem den Kopf verdrehen müssen
 
Alt 03.11.2005, 17:13  
Benutzer
 
Registriert seit: 31.12.2004
Beiträge: 62
Adrenochrom
Standard

Tacho,
ich habe leider das gleiche Problem, allerdings haben mir die Ratschläge nicht geholfen. Habe natürlich die Suche benutzt, aber keine Lösung gefunden, die mich weitergebracht hat. Wollte jetzt auch kein neues Thema schrieben ... gibt ja eh schon genug hier

Also, bei mir ist es so, daß man erst eingeloggt ist, wenn die Seite aktualisiert wird oder das Loginformular ein weiteres mal ausgeführt wird. Bei meinem Localhost funktioniert es allerdings einwandfrei

Hier mal meine Dateien
index.php
PHP-Code:
<?php
// Session starten
session_start();

// Includen
include ("includes/header.php");
include_once 
"includes/class_ktemplate.inc.php";

// Instanz für das Template erstellen
$t = new KTemplate("templates/index.tpl");


if(isset(
$_POST['login']))
    {
        
$query mysql_query("SELECT userid, name
                              FROM users
                              WHERE name='"
.$_POST['username']."' AND pass=MD5('".$_POST['passwort']."')
                              LIMIT 1"
)
                              OR die(
mysql_error());
        
$array mysql_fetch_array($query);
        if (
mysql_num_rows($query) == 1)
            {
                
$userid $array['userid'];
                
session_register('userid');
                
$username $array['name'];
                
session_register('username');
            }
        else
            {
                
$t_false $t -> fetchBlock("falsche_eingabe");
            }
    }
    
if(isset(
$_SESSION['userid']))
    {
        
$t_eingeloggt $t -> fetchBlock("eingeloggt");
    }


switch(
$a)
    {
        case 
'registrieren':
            ...
            break;
        case 
'aktivieren':
            ...
            break;
        case 
'erstellen':
            ...
            break;
        default:
            
$t_index $t -> fetchBlock('index');
            break;
    }

// Den Variablen einen Platzhalter zuweisen
$t -> assign("eingeloggt"$t_eingeloggt);
$t -> assign("index"$t_index);

// Template ausgeben
$t ->out();

// Footer includen
include ("includes/footer.php");
?>
Und das Forumular
index.tpl
Code:
<form name="login" method="post" action="index.php">
<input class="formstyle2" name="username" type="text" size="16" maxlength="20" style="background-image:url(templates/img/name.gif); border-width: 0px;">

[img]templates/img/Abstandhalter.gif[/img]
		  
<input class="formstyle2" name="passwort" type="password" size="16" maxlength="12" style="background-image:url(templates/img/pass.gif); border-width: 0px;">

[img]templates/img/Abstandhalter.gif[/img]

<input class="formstyle" type="submit" name="login" value="Einloggen">
	    </form>
Vielleicht sollte ich mir auch mal eine Auszeit von diesem Programmierzeugs nehmen
Adrenochrom 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
SESSION Abfragen rezix PHP Tipps 2008 9 29.01.2008 07:47
Problem bei session Lifetime Cyberbob_at_tot PHP Tipps 2007 5 05.06.2007 17:47
Session in Session tinchen PHP Tipps 2007 22 21.03.2007 19:53
session nach seitenwechsel leer... GELight PHP Tipps 2006 8 17.09.2006 15:17
Session Logout Login Navigation TailerD PHP Tipps 2006 10 24.06.2006 17:12
session array Timo Trallala PHP Tipps 2006 18 22.04.2006 13:45
[Erledigt] php session problem :( PHP Tipps 2005-2 5 21.10.2005 16:37
Session wird nicht angelegt PHP Tipps 2005-2 7 24.07.2005 13:35
Kreieren einer Session PHP Tipps 2005 11 28.05.2005 15:16
[Erledigt] Formulardaten in einer Session speichern, per Link übergeben PHP Tipps 2004-2 2 29.12.2004 15:47
[Erledigt] Hilfe...PhpBB Session Problem!! PHP Tipps 2004-2 2 15.12.2004 18:28

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php session erst nach aktualisieren, php session aktualisieren, session aktualisieren, einloggen ist erfolg

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:50 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.