SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 17.03.2009, 21:40:24
einsteigi einsteigi ist offline
Anfänger
 
Registriert seit: Jan 2006
Beiträge: 124
Login nur mit Cookies

Hallo beisammen,
jetzt mach ich heut schon fast den halben Tag daran rum.

Es geht um folgendes meine Seite ist mehrsprachig. Die Sprachauswahl erfolgt über eine Session, die kann an die URL oder als Cookie gespeichert werden.

Jetzt kommt das große Problem.
Die Seite hat auch ein Login, dieser soll nur mit Cookies gestattet werden.

Hab mir folgedes Kozept ausgedacht:

Sobald jemand den Button des Loginformulars drückt wird eine $_SESSION['loginVersuch'] = true gespeichert.
Dann wird mittels ini_set('session.use_only_cookies', '1'); die Sessionvarablen nur noch in Cookies erlaubt.
Jetzt wird $_SESSION['cokkiesNichtErlaubt'] = true; versucht diese Varable als Cookie zu speichern.
Dann wird mit $_SESSION['loginVersuche'] und $_SESSION['cokkiesNichtErlaubt'] = true geprüft ob Cookie erlaubt wurden, wenn ja wird $_SESSION['login'] = true erzeugt, andernfalls eine Fehlermeldung rausgegeben.
Wenn dann $_SESSION['login'] == true ist wird ein anderes Menu includet, andere Startseite, so stell ich mir das vor. unset wird gemacht, weil $_SESSION['loginVersuche'] nur für login.php zuständig ist.
Was mache ich falsch, bzw. ist mein Denkfehler?

Hoffe ihr könnt mir weiterhelfen.

PHP-Code:
if ( !empty($_POST['senden_login']) && !empty($_POST['login_gesendet']) && empty($meldung) )
{
    
$_SESSION['loginVersuch'] = true;
    
ini_set('session.use_only_cookies''1'); 
    
$_SESSION['cokkiesNichtErlaubt'] = true;
    
$_SESSION['email'] = $passwortEmailAusDB['email'];
    
header('Location: '.$urlUnternehmen.'1/'.2.'/Login/');
}
    
/*echo $_SESSION['email'];
    echo $_SESSION['login'];*/
// Prüfen ob Cookies nicht aktzeptiert worden

if ( isset($_SESSION['loginVersuch']) && $_SESSION['loginVersuch'] && !$_SESSION['cokkiesNichtErlaubt'] )
{
    
//<!-- Sprache müssen aktzeptiert werden. -->
    
$rowSpracheFromSprachen readSpracheFromSprachen($variable 'wurdenNichtAktzeptiert'$sprache $ermittelteSpracheInjectionfree);
    
$sprache $rowSpracheFromSprachen[$ermittelteSpracheInjectionfree];
    if ( !empty(
$sprache) ){ $wurdenNichtAktzeptiert $sprache; }
    
$cookiesWurdenNichtAkzeptiert 'Cookies '.$wurdenNichtAktzeptiert;
}
if ( isset(
$_SESSION['loginVersuch']) && $_SESSION['loginVersuch'] && $_SESSION['cokkiesNichtErlaubt'])
{    
    
//Cookies akzeptiert
    
$_SESSION['login'] = true;
    echo 
'COOKIES ERLAUBT';
    echo 
$_SESSION['cokkiesNichtErlaubt'];
}
unset(
$_SESSION['loginVersuch']);

if ( !empty(
$cookiesWurdenNichtAkzeptiert) ) 
{
    echo 
'
    <div style="background-color: #ebf2ff; margin-bottom: 15px; padding: 5px; border: 1px #B2CDFF solid;">
        <ul type="square">'
.$cookiesWurdenNichtAkzeptiert.'</ul>
    </div>'


HTML-Code:
<form action="http://www.url.de/1/2/Login/" method="POST">

<!--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHh -->
<table cellspacing="0" cellpadding="0" style="padding: 10px;" class="form_HintergrundBorder">

            <tr><td align="right">
            		<label for="email"><strong>E-Mail-Adresse</strong></label>
            	</td>
                <td width="2"></td>
                <td><input type="text" name="email_1" size="22" value=""
				 class="" /></td></tr>
                
           	<tr><td align="right">

           			<label for="password"><strong>Passwort</strong></label>
            	</td>
                <td width="2"></td>
                <td><input type="password" name="passwort_1" size="22" value=""
				 class="" /></td></tr>
                
          <tr><td align="right" colspan="3">
				<!--Überprüfen ob Formular zum erstenmal aufgerufen wird -->
				Cookies müssen aktzeptiert werden.<br />
				<input name="login_gesendet" type="hidden" value="1" />

				<input class="button_login" type="submit" name="senden_login" value="Login" style="margin: 10px 0 0 0;" />
		</td></tr>
</table>
</form>
__________________
Es grüßt euch

Einsteigi

Geändert von einsteigi (17.03.2009 um 21:48:53 Uhr)
Mit Zitat antworten
  #2  
Alt 17.03.2009, 21:48:02
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: Login nur mit Cookies

Gegenfrage: Was funktioniert denn nicht?
Mit Zitat antworten
  #3  
Alt 17.03.2009, 21:57:20
einsteigi einsteigi ist offline
Anfänger
 
Registriert seit: Jan 2006
Beiträge: 124
AW: Login nur mit Cookies

Hab mir in Firefox für die Webseite, die Cookies deaktiviert.
Dann geprüft ob die Fehlermeldung erscheint kam nicht. In Seamoney ha ich die Cookies aktzeptiert, bzw. weiß nicht wo ich das unterbinden kann.
In Seamoney wurden sowohl die email, als auch das true von $_SESSION['login'] gespeichert.
Logischerweise in Firefox nicht.

Aber wie mach ich das wenn keine Cookies akzeptiert wurden die Fehlermeldung erscheint?

Muss ja irgendwie prüfen das die Programmierung stimmt, erst dann kann ich ein anderes Menu includen sowie eine andere Startseite.
__________________
Es grüßt euch

Einsteigi
Mit Zitat antworten
  #4  
Alt 17.03.2009, 22:10:58
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: Login nur mit Cookies

Zitat:
Zitat von einsteigi Beitrag anzeigen
PHP-Code:
if ( !empty($_POST['senden_login']) && !empty($_POST['login_gesendet']) && empty($meldung) )
{
    
$_SESSION['loginVersuch'] = true;
    
ini_set('session.use_only_cookies''1'); 
    
$_SESSION['cokkiesNichtErlaubt'] = true;
    
$_SESSION['email'] = $passwortEmailAusDB['email'];
    
header('Location: '.$urlUnternehmen.'1/'.2.'/Login/');
}
    
/*echo $_SESSION['email']; 
Nach dem Senden werden diese Variablen gesetzt, da der Sendebutton nicht leer ist, das versteckte Feld login_gesendet ebenfalls einen Wert hat und es keine Meldungen gibt.
Die Prüfung findet somit generell nicht nach dem Senden statt.
Mit Zitat antworten
  #5  
Alt 17.03.2009, 22:17:11
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: Login nur mit Cookies

Oder etwas genauer. Die Prüfungen finden schon statt aber da '$_SESSION['cokkiesNichtErlaubt'] = true;' gesetzt wird sind alle Werte für die If-Anweisung bei Cookies erlaubt gesetzt.
Mit Zitat antworten
  #6  
Alt 17.03.2009, 23:00:57
einsteigi einsteigi ist offline
Anfänger
 
Registriert seit: Jan 2006
Beiträge: 124
AW: Login nur mit Cookies

@ urvater: erstmal danke für deine Antwort, hast du eine Idee wie die Anweisung dann lauten muss? Ich gerade nicht.
__________________
Es grüßt euch

Einsteigi
Mit Zitat antworten
  #7  
Alt 18.03.2009, 00:43:36
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: Login nur mit Cookies

Es ist eigentlich nicht einer Idee sondern eher eine Frage was man machen will. Du selbst willst mit Cookies den Login vornehmen. Ich sehe allerdings nur Session-Variablen.
An keiner Stelle sehe ich, daß du auch nur im Ansatz eine Cookie-Variable setzt.
(SESSSION != COOKIE)

Dann werden Variablen auf true gesetzt. Spätere Fehler müssten allerdings false beinhalten, damit die Prüfung überhaupt stattfindet.

Ich zerflücke mal deine Abfrage, die keine Cookies als ausgabe bringen soll.
PHP-Code:
//in der If-Anweisung fragst du ob $_SESSION['loginVersuch'] existiert
//als nächstes und steht $_SESSION['loginVersuch'] ohne Bedingung da.... eher überflüssig wenn nicht ein Wert erwartet wird
//!$_SESSION['cokkiesNichtErlaubt'] kann nie nach dem Senden eintreten, da die Variable oben gesetzt wird.
if ( isset($_SESSION['loginVersuch']) && $_SESSION['loginVersuch'] && !$_SESSION['cokkiesNichtErlaubt'] ) 

    
//<!-- Sprache müssen aktzeptiert werden. --> 
    
$rowSpracheFromSprachen readSpracheFromSprachen($variable 'wurdenNichtAktzeptiert'$sprache $ermittelteSpracheInjectionfree); 
    
$sprache $rowSpracheFromSprachen[$ermittelteSpracheInjectionfree]; 
    if ( !empty(
$sprache) ){ $wurdenNichtAktzeptiert $sprache; } 
    
$cookiesWurdenNichtAkzeptiert 'Cookies '.$wurdenNichtAktzeptiert

Alles innerhalb des IF's setzt wiederum Variablen, die nichts mit COOKIES zu tun haben und sich auf die Sprache beziehen. Allerdings bleibt mir hier nur Orakeln, da ich die Funktionen nicht kenne.

Auf den Punkt gebracht: Dir fehlt noch einiges an Wissen bzgl. SESSION und COOKIE
Mit Zitat antworten
  #8  
Alt 18.03.2009, 00:56:40
einsteigi einsteigi ist offline
Anfänger
 
Registriert seit: Jan 2006
Beiträge: 124
AW: Login nur mit Cookies

Danke für deine Antwort. Werde dann mal setcookie verwenden, dachte das das auch mit Sessio geht, nun ja man wird schlauer. Werd den Code dann mal posten.
__________________
Es grüßt euch

Einsteigi
Mit Zitat antworten
  #9  
Alt 18.03.2009, 12:49:04
einsteigi einsteigi ist offline
Anfänger
 
Registriert seit: Jan 2006
Beiträge: 124
AW: Login nur mit Cookies

@ urvater, danke für den Hinweis wegen den Cookies!
Musste in der .htaccess wegen mod_rewrite was ändern.
unset war auch falsch, wird jetzt in den anderen Dateien die includet werden gemacht.
Der Hash wird sobald $_COOKIE['login'] = true ist in DB gespeichert. dann wird jedesmal wenn der eingeloogte USER an Link klickt, geschaut, ob der Hash und die Email gleich mit dem COOKIE sind, außerdem wird geprüft ob $_COOKIE['login'] = true ist, ist etwas davon nicht der Fall wird ein Header Location gemacht (Lougout) und die Cookies mit einer negativen Haltbarkeitszeit überschrieben.

PHP-Code:
<?php
session_start
();
$meldung '';
    if ( !empty(
$_POST['senden_login']) && !empty($_POST['login_gesendet']) && empty($meldung) )
    {
        
$_SESSION['loginVersuch'] = true;
        
setcookie('login'truetime() + 60*10);
        
setcookie('email''test@test.de'time() + 60*10);
        
setcookie('hash''hash'time() + 60*10);
        
header('Location: '.$urlUnternehmen.'1/'.2.'/Login/'.SID);
    }
    
/*echo $_SESSION['email'];
    echo $_SESSION['login'];*/
// Prüfen ob Cookies nicht aktzeptiert worden

if (!empty($_SESSION['loginVersuch']) && $_SESSION['loginVersuch'])
{
    if ( !isset(
$_COOKIE['email']) && !isset($_COOKIE['hash'])  && !isset($_COOKIE['login']) )
    {
        
$cookiesWurdenNichtAkzeptiert 'Cookies wurden nicht aktzeptiert';
    }
    if (  !empty(
$_COOKIE['email']) && !empty($_COOKIE['hash'])  && $_COOKIE['login'] )
    {    
        
//Cookies akzeptiert
        
echo 'COOKIES ERLAUBT';
    }
}


echo 
'loginVersuch '.$_SESSION['loginVersuch'].'<br />';
echo 
'email '.$_COOKIE['email'].'<br />';
echo 
'hash '.$_COOKIE['hash'].'<br />';
echo 
'login '.$_COOKIE['login'].'<br />';
echo 
'SID :'.SID.'<br />';
echo 
'PHPSESSID: '.substr(SID, - 32);
?>
__________________
Es grüßt euch

Einsteigi
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sessions, Cookies und session.use_trans_sid Serp PHP für Fortgeschrittene und Experten 7 16.07.2006 06:44:55
iframe Login mit Prüfung Nisha PHP für Fortgeschrittene und Experten 1 01.04.2006 14:56:12
Login code Blackhell PHP für Fortgeschrittene und Experten 1 13.12.2005 19:43:51
sessions funktionieren nur wenn man cookies blockt no-gi PHP für Fortgeschrittene und Experten 1 11.10.2003 09:38:49
Seite nach login TOT!!! Achilles2 PHP für Fortgeschrittene und Experten 2 26.07.2002 00:30:13


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:10:07 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt