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 ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken 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
Hilfe Community Kalender Heutige Beiträge Suchen

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

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 28.01.2013, 10:20:38
Tuxman Tuxman ist offline
Anfänger
 
Registriert seit: Dec 2006
Beiträge: 83
AW: Twitter/OAuth: Autorisierung immer zweimal nötig

Dein Code führt - mit leerer SESSION - erneut auf 'ne leere Seite...

Oder hab' ich was falsch gemergt?
Vollständiger Code inkl. Debug-Gekröse oben:

PHP-Code:
<?php
// Anmeldung für Benutzer - nicht für den Bot (die erfolgt per oauth.php) :-)

session_start();

echo 
"Diesen Code solltest du eigentlich :-) nie zu Gesicht bekommen. Klick einfach <a href='index.desktop.php?aktion=abmelden'>hier</a>, dann geht es weiter.<br />
Und sag @tux0r auf Twitter Bescheid, dass er anscheinend Mist gebaut hat. ;-)<br />
<br />
Mach einen Screenshot von dieser Meldung, das sollte helfen.<br />
<br />
<pre>SESSION:
"
;
echo 
var_dump($_SESSION);
echo 
"</pre>";

require_once(
'config.php');

define('ONLINE'get_ini('session.gc_maxlifetime'));
define('INDEX''/index.php');

$url sprintf('http://%s%s',
  
$_SERVER['HTTP_HOST'],
  
rtrim(dirname($_SERVER['SCRIPT_NAME']), '/\\'));

$indexurl .=  INDEX;
$noauthurl .= NO_AUTH;

$requestUrl   'http://api.twitter.com/oauth/request_token';
$authorizeUrl 'http://api.twitter.com/oauth/authorize';
$accessUrl     'http://api.twitter.com/oauth/access_token';

// Sitzung noch gültig?
if (!empty($_SESSION['online'])){
    if (
time() - $_SESSION['online'] > ONLINE){
        
$_SESSION = array();
        
session_write_close();
        
header("Location: $indexurl");
        exit;
    }
}

if (isset(
$_GET["denied"])) {
    
// Benutzer hat die Anmeldung abgebrochen. Schade.
    
$_SESSION = array();
    
session_write_close();
    
header("Location: $indexurl");
    exit;
}
elseif (!isset(
$_SESSION["oauth_request_token"])) {
    
// Der Benutzer hat noch keine Anmeldung.
    
$oauth = new OAuth($consumer_key,$consumer_secret,OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI);

    
$tokenInfo                       $oauth->getRequestToken($requestUrl);
    
$_SESSION['oauth_request_token'] = $tokenInfo['oauth_token_secret'];

    
$_SESSION['online'] = time();
    
$location "$authorizeUrl?oauth_token=$tokenInfo[oauth_token]";

    
session_write_close();
    
header('Location: ' $location);

    exit;
}
elseif (!isset(
$_SESSION["oauth_token"])) {
    if (!isset(
$_GET['oauth_token'])) {
        
// Der Benutzer ist noch angemeldet, aber seine Session ist irgendwie verschwunden. o_O
        // Vermutlich Browser neu gestartet oder so etwas. ;-)
        // Daher bekommt er auch kein neues oauth_token. Kein Problem, holen wir ihm halt ein neues.
        
$_SESSION = array(); // Sitzung leeren

        
session_write_close();

        
header("Location: $indexurl");
        exit;
    }
    
$oauth = new OAuth($consumer_key,$consumer_secret,OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI);

    
$oauth->setToken($_GET['oauth_token'], $_SESSION['oauth_request_token']);
    
$tokenInfo $oauth->getAccessToken($accessUrl);

    
$_SESSION["oauth_token"]  = $tokenInfo['oauth_token'];
    
$_SESSION['oauth_token_secret'] = $tokenInfo['oauth_token_secret'];

    
$_SESSION['online'] = time();

    
$oauth->setToken($_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);

    
$oauth->fetch('https://api.twitter.com/1.1/account/verify_credentials.json');
    
$json json_decode($oauth->getLastResponse());

    
$_SESSION["username"] = (string)$json->screen_name// got it. ;-)

    
session_write_close();
    
header("Location: $indexurl");

    exit;
}
elseif (isset(
$_SESSION["username"])) {
    
// Sollte doch alles in Ordnung sein. :-)
    // Alle anderen Fälle werden mir hoffentlich gemeldet. ;-)
    
$_SESSION['online'] = time();
    
    
header("Location: $indexurl");
    exit;
}
?>
__________________
tuxproject.de
Mit Zitat antworten
  #12  
Alt 28.01.2013, 13:16:34
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Twitter/OAuth: Autorisierung immer zweimal nötig

Zitat:
Zitat von Tuxman Beitrag anzeigen
Dein Code führt - mit leerer SESSION - erneut auf 'ne leere Seite...
KA, welche Seite Du dem User anbietest, wenn er nicht authentifiziert ist.

User neu, keine Session
-> ab zu Twitter

User hat ne leere Session
-> ab zu Twitter

User hat alles erledigt
->

PHP-Code:
if (empty($_SESSION["username"])) OR 
    (
time() - $_SESSION['online']) > ini_get('session.gc_maxlifetime')){
        
$_SESSION = array();
        
session_write_close();
        
header("Location: http://example.com/login.php"); # zurück zur Paßkontrolle
        
exit;
    }
   
$_SESSION['online'] = time(); # timestamp aktualisieren

# hier beginnt Dein Script für die geschlossene Gesellschaft


Den Test mußt Du bei jedem Klick ausführen.
Mit Zitat antworten
  #13  
Alt 28.01.2013, 13:30:10
Tuxman Tuxman ist offline
Anfänger
 
Registriert seit: Dec 2006
Beiträge: 83
AW: Twitter/OAuth: Autorisierung immer zweimal nötig

Wenn der Benutzer nicht authentifiziert ist, soll er index.php aufrufen. Die prüft auf Vorhandensein der username-SESSION-Variable und sonst eigentlich nichts.

Wo soll dein Code dann hin? Ich bin gerade etwas verwirrt.
__________________
tuxproject.de
Mit Zitat antworten
  #14  
Alt 28.01.2013, 14:59:33
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Twitter/OAuth: Autorisierung immer zweimal nötig

Zitat:
Zitat von Tuxman Beitrag anzeigen
Wenn der Benutzer nicht authentifiziert ist, soll er index.php aufrufen. Die prüft auf Vorhandensein der username-SESSION-Variable und sonst eigentlich nichts.

Wo soll dein Code dann hin? Ich bin gerade etwas verwirrt.
Ich mittlerweile auch.

Noch mal von vorn:
Du hast zwei unterschiedliche Seiten.
1. allgemeines Blabla + ein Knopf, daß sich Twitterlinge einlogen dürfen. Der Klick darauf führt zu dem OAuth Script. Und wenn alle Hürden gemeistert wurden, folgt

2. die spezielle Seite für die Twitterlinge. Nach dem session_start() mußt Du JEDES MAL prüfen, ob die Session noch gültig ist: in $_SESSION gibts nen Usernamen.
Da sich User auch mal still davonschleichen könnte, wird bei jedem Klick ein Timestamp im Session Hash gesetzt. Als Haltezeit hab ich session.gc_maxlifetime genommen. Bevor der timestamp neu gesetzt wird, wird getestet, ob der Request innerhalb der Sessionhaltezeit erfolgte. Ist das nicht der Fall -> goto 1 aka "zurück zur Einlaßkontrolle.

Ordentliche User klicken allerdings auf den Logout Knopf. Ich würde es so erledigen:
PHP-Code:
session_start();
$_SESSION = array();
session_write_close();
header('Location http://example.com/seite_mit_dem_login.php');
exit; 
Mit Zitat antworten
  #15  
Alt 28.01.2013, 15:06:51
Tuxman Tuxman ist offline
Anfänger
 
Registriert seit: Dec 2006
Beiträge: 83
AW: Twitter/OAuth: Autorisierung immer zweimal nötig

Die "spezielle Seite" ist ja auch die mit dem allgemeinen Blabla (index.php), nur dass die je nach vorhandener SESSION einige Zusatzfunktionen bietet. Das funktioniert auch...
__________________
tuxproject.de
Mit Zitat antworten
  #16  
Alt 28.01.2013, 15:47:59
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Twitter/OAuth: Autorisierung immer zweimal nötig

Zitat:
Zitat von Tuxman Beitrag anzeigen
Die "spezielle Seite" ist ja auch die mit dem allgemeinen Blabla (index.php), nur dass die je nach vorhandener SESSION einige Zusatzfunktionen bietet. Das funktioniert auch...
Aha.

Dann zeig mal den aktuellen Status (bevors ne unendliche Geschichte wird):
login Script
logout Script
die Session-Kontrolle im index.php
und die beiden "Knöpfe" bzw. Links für Login und Logout.
Mit Zitat antworten
  #17  
Alt 28.01.2013, 16:46:16
Tuxman Tuxman ist offline
Anfänger
 
Registriert seit: Dec 2006
Beiträge: 83
AW: Twitter/OAuth: Autorisierung immer zweimal nötig

PHP-Code:
<?php

session_start
();

if (
$_GET["aktion"] == "abmelden") {
    
session_unset();
    
session_destroy();
    
header("Location: index.php");
    exit;
}
elseif (
$_POST["aktion"] == "optout") {
    if (isset(
$_SESSION["username"])) {
        
$optoutFileName "optout/" strtolower($_SESSION["username"]);
        if (!
file_exists($optoutFileName)) {
            
$optoutFileHandle fopen($optoutFileName'w'); // könnte fehlschlagen, wäre dumm, tja.
            
fclose($optoutFileHandle);
        }
    }
    exit;
}

// -------------------------------------------

include("header.desktop.php");

?>
<div id="tabs">
<ul>
    <?php if (isset($_SESSION["username"])) { ?>
    <li><a href="#abmelden">Abmelden</a></li>
    <?php } else { ?>
    <li><a href="#anmelden">Anmelden</a></li>
    <?php ?>
    <li><a href="#anstupsen">Anstupsen</a></li>
    <?php
    $optoutFileName 
"optout/" strtolower($_SESSION["username"]);
    if (!isset(
$_SESSION["username"]) || !file_exists($optoutFileName)) {
    
?>
    <li><a href="#optout">Opt-Out</a></li>
    <?php ?>
    <li><a href="#faq">FAQ</a></li>
    <li><a href="#spenden">Spenden</a></li>
</ul>
<?php if (isset($_SESSION["username"])) { ?>
<div id="abmelden">
Wenn du dich abmeldest, verlierst du die Vorteile des Angemeldetseins. Das wäre doch schade!<br />
<br />
<a href="index.desktop.php?aktion=abmelden">Trotzdem abmelden.</a>
</div> <!-- /abmelden -->
<?php } else { ?>
<div id="anmelden">
Du willst mehr? Kein Problem - melde dich hier einfach mit deinem Twitter-Account an!<br />
(Vergiss nicht, dich nach erfolgtem Stupsen wieder abzumelden. :-))<br />
<br />
<a href="userlogin.php"><img src="img/signin.png" alt="Mit Twitter anmelden" /></a>
</div> <!-- /anmelden -->
<?php ?>
<div id="anstupsen">
    <?php if (!isset($_SESSION["username"])) { ?>
    <iframe src="http://rcm-de.amazon.de/e/cm?t=hirnfi20-21&o=3&p=26&l=ez&f=ifr&f=ifr" width="468" height="60" scrolling="no" marginwidth="0" marginheight="0" border="0" frameborder="0" style="border:none;"></iframe><br />
    <div style="color:#555555;font-size:11px">Du willst mehr Funktionen und keine Werbung? Dann <a href="userlogin.php">logge dich per Twitter ein</a>!</div>
    <span id="username"></span><!-- relevant für die tweet.php -->
    <?php } else { ?>
    <div id="loggedin"><span>Angemeldet als <span id="username"><?php echo $_SESSION["username"]; ?></span>.</span> (<a href="index.desktop.php?aktion=abmelden">abmelden</a>)</div>
    <?php ?>

    <div style="margin:1.5em 0 1.5em 0;display:block;border-bottom:2px dotted darkgray"></div>

    <div style="float:right">Vorschau:<br /><div style="display:inline;background-color:lightgrey;max-width:400px;color:#555555;padding:0 4px 0 4px" id="vorschau">(noch keine)</div></div>

    <div style="font-weight:bold;font-size:15px">Diesen Twitterer anstupsen: @<input onkeyup="vorschau();findenutzer();" maxlength="15" name="target" id="target" /> <span id="twitteruserexists"></span></div><br />
    <div style="clear:both"></div>

    <?php if (isset($_SESSION["username"])) { ?>
        <fieldset style="margin-bottom:4px">
            <legend>optional</legend>
            <div><div style="float:left;width:180px">eigenen Namen anzeigen als:</div> <input onkeyup="vorschau()" size="30" maxlength="30" name="displayname" id="displayname" /> (max. 30 Zeichen, kein vorangestelltes @ möglich)</div>
            <div><div style="float:left;width:180px">Stupsgrund:</div> <input onkeyup="vorschau()" size="30" name="pokereason" id="pokereason" /></div>
        </fieldset>
    <?php ?>

    <div><button type="button" id="stupsbutton" onclick="tweet();">Stupsen!</button> <span id="buttonhint"></span></div>
    <div id="status" style="padding-top:3px"></div>
</div> <!-- /anstupsen -->
<?php
    
if (!isset($_SESSION["username"]) || !file_exists($optoutFileName)) {
?>
<div id="optout">
<div>Du möchtest nicht angestupst werden? Dann kannst du dich hier vom Stupsen abmelden. Beachte, dass du dies <b>nicht</b> selbst rückgängig machen kannst! (Solltest du das jemals wollen, hinterlasse @tux0r eine Nachricht.)</div>
<?php
if (!isset($_SESSION["username"])) {
?>
<div><br />Du musst mit Twitter eingeloggt sein, damit ich überprüfen kann, ob du auch wirklich du bist. Gehe dazu auf "Anmelden" und melde dich mit deinem Twitter-Account an, dann kannst du dich hier austragen. :-)</div>
<?php } else { ?>
<div>Wenn du unten stehenden Button betätigst, wird dein Account @<?php echo $_SESSION["username"]; ?> nie wieder vom Stupsbot behelligt werden. Ich sag' schon mal Tschüss!</div>

<div><br /><button type="button" id="optoutbutton" onclick="optout();">Opt-Out!</button></div>

<div id="optoutstatus"></div>
<?php ?>
</div> <!-- /optout -->
<?php ?>
<div id="faq"><div><b>1. WTF?</b></div>

<div>Ich so: <a href="http://www.twitter.com/tux0r/status/267048036662910977" target="_blank">Twitter braucht einen "Anstupsen"-Knopf.</a><br />
@c2h5oh1 so: <a href="http://www.twitter.com/c2h5oh1/status/267048123707310080" target="_blank">Nein! N E I N!!!</a><br />
Ich so: Na, jetzt erst recht!</div>

<hr />

<div><b>2. Warum nur auf Deutsch? Das ist voll nicht international und das alles!</b></div>

<div>a) Weil es Stupsbot.org heißt und das auf Englisch keinen Sinn ergäbe.<br />
b) Ist es wo-hohl!</div>

<hr />

<div><b>3. Aber warum gibt es dann Stupsbot.de noch nicht?</b></div>

<div>Weil ich ein armer Student bin und mir nicht so viele Domains leisten kann. Dir passt das nicht? Dann lass' mir doch eine Spende da. :-)<br />
(Details kannst du der "Spenden"-Seite oben rechts entnehmen.)</div>

<hr />

<div><b>4. Warum muss man sich hier anmelden????ßßßß</b></div>

<div>Um zu verhindern, dass böswillige Zeitgenossen, die auf Twitter gesperrt wurden, trotzdem Leute - womöglich unter fremdem Namen - nerven können. ;-)<br />
Muss man aber gar nicht, wenn man auf den Komfort verzichten kann, den die Anmeldung mit sich bringt.</div>

<hr />

<div><b>5. Und warum muss ich hier JavaScript aktivieren? :-(</b></div>

<div>Aus Prinzip. (Wenn jemand eine Möglichkeit kennt, AJAX ohne Javascript umzusetzen: Immer her damit!)<br />
Du kannst natürlich auch einfach einen mobilen Browser verwenden. Mobile Browser besitzen normalerweise keine Möglichkeit, JavaScript auszuschalten. Eigentlich ist das schade.</div>

<hr />

<div><b>6. Die Stupserei geht mir auf den Sack!</b></div>

<div>Das Problem ist leicht gelöst: Ignoriere einfach den <a href="http://twitter.com/Stupsbot" target="_blank">@Stupsbot</a> auf Twitter. Du kannst dich hier auch einfach anmelden und dich unter "Opt-Out" ein für allemal von dem Bot befreien. ;-)</div>

<hr />

<div><b>7. Kannst du eigentlich sehen, wer hier wen anstupst?</b></div>

<div>Nein. Bei anonymen Stupsern seid ihr leider auf euch gestellt. Betrachtet es als Herausforderung. ;-)</div>

<hr />

<div><b>8. Ich würde dir gern sagen, wie "toll" ich deinen Scheißspambot finde!!1</b></div>

<div>Nun, schick' mir einfach 'nen Tweet an <a href="http://twitter.com/tux0r" target="_blank">@tux0r</a>, ich werde ihn dann unter Umständen zur Kenntnis nehmen.</div>

<hr />

<div><b>9. Hast du eigentlich häufiger solche dummen Ideen?</b></div>

<div>Ja, zum Beispiel <a href="http://twitter.com/Die_Kuckucksuhr" target="_blank">@Die_Kuckucksuhr</a>.</div>

<hr />

<div><b>10. Gibt es irgendwo eine Übersicht, wie viele Leute schon angestupst wurden?</b></div>

<div>Natürlich, schau auf der Twitterseite vom <a href="http://twitter.com/Stupsbot" target="_blank">@Stupsbot</a>. Für den millionsten Stupser gibt es kein Geschenk.</div>

<hr />

<div><b>11. Manchmal bekomme ich nur eine weiße Seite zu sehen, wenn ich mich anmelden möchte, und/oder muss mich jedes Mal zweimal anmelden. :-(</b></div>

<div>In dem Fall hast du vielleicht nur vergessen, dich abzumelden, oder mein Code läuft mal wieder Amok. Beides kannst du <a href="index.desktop.php?aktion=abmelden">ändern.</a></div>
</div> <!-- /faq -->
<div id="spenden">
Vielleicht hat der ein oder andere von euch Gefallen am Stupsbot gefunden und möchte mich finanziell unterstützen? Dies ist via PayPal problemlos möglich, einfach den folgenden Button verwenden:<br />
<br />
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input name="cmd" value="_s-xclick" type="hidden">
    <input name="hosted_button_id" value="8634980" type="hidden">
    <input src="img/paypal_spenden.gif" name="submit" border="0" type="image">
</form>
Ihr könnt mir natürlich auch ein wenig Provision zukommen lassen, indem ihr auf <a href="http://netcup.de">netcup.de</a> einen <a href="http://tuxproject.de/netcup.php">meiner Gutscheine</a> einlöst oder einfach <a target="_blank" href="http://www.amazon.de/?_encoding=UTF8&site-redirect=de&tag=hirnfi20-21&linkCode=ur2&camp=1638&creative=19454">auf Amazon einkauft</a>. Noch einfacher geht das, indem ihr unter Firefox (mit <a href="http://greasespot.net" target="_blank">GreaseMonkey</a>-Erweiterung), Opera oder Chrome (mit Tampermonkey-Erweiterung) <a href="http://home.arcor.de/der_tuxman/userscripts/hf20.partnerlinks.user.js" target="_blank">dieses</a> Userscript (einfach daraufklicken) installiert, das jedem Link zu Amazon.de meine Partner-ID anhängt. Euch entstehen dadurch keine Mehrkosten, mir aber Mehreinnahmen, was meine Fähigkeit, den Stupsbot am Leben zu erhalten, nachhaltig befeuern dürfte.<br />
<br />
Außerdem nehme ich auch Bitcoins an - die Spendenadresse ist: 1FJngJTiBiidA2HZ81xS9FGdrQmbQe2BHY. Oder <a href="http://www.bitcoinplus.com/generate?for=9996669">generiert mir doch welche</a>!<br />
<br />
Wofür immer ihr euch entscheidet: Ich bedanke mich schon jetzt für jede Spende. :-)
</div> <!-- /spenden -->
</div> <!-- /tabs -->

<?php
include("footer.php");

?>
(Im "Header" ist nur allerlei HTML-Zeug drin, nichts, was PHP-technisch verwendet würde.)
__________________
tuxproject.de
Mit Zitat antworten
  #18  
Alt 28.01.2013, 17:39:11
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Twitter/OAuth: Autorisierung immer zweimal nötig

Zitat:
Zitat von Tuxman Beitrag anzeigen
(Im "Header" ist nur allerlei HTML-Zeug drin, nichts, was PHP-technisch verwendet würde.)
Das Script ist extrem grottig.

Noch mal - ich wollte den aktuellen Status sehen:
login Script userlogin.php - fehlt

logout Script - nicht sicher umgesetzt, weil PHP die Session meist erst dann killt, wenn es Zeit hat.

die Session-Kontrolle mit timestamp im index.desktop.php - fehlt

und die beiden "Knöpfe" bzw. Links für Login und Logout - mühsam und nur zufällig gefunden

Zitat:
Wenn du dich abmeldest, verlierst du die Vorteile des Angemeldetseins.
Huch? Sollen die Tüten etwa 24h Online sein und alle 1440sec. jemanden anstubsen?
Mit Zitat antworten
  #19  
Alt 28.01.2013, 18:03:04
Tuxman Tuxman ist offline
Anfänger
 
Registriert seit: Dec 2006
Beiträge: 83
AW: Twitter/OAuth: Autorisierung immer zweimal nötig

Es sollte erst mal funktionieren und nicht schön sein.

userlogin.php ist die Datei, über die wir hier die ganze Zeit reden. ;)
(Der PHP-Code von weiter oben.)

Zitat:
die Session-Kontrolle mit timestamp im index.desktop.php - fehlt
Ist ja auch noch nicht drin, ist aber vermutlich auch nicht die Ursache des Zweimaleinloggens...?

Zitat:
und die beiden "Knöpfe" bzw. Links für Login und Logout - mühsam und nur zufällig gefunden
Im UI sofort sichtbar. ;)

Zitat:
Sollen die Tüten etwa 24h Online sein und alle 1440sec. jemanden anstubsen?
Nö, müssen sie nicht. Ist auch, wie wir ja nun wissen, technisch gar nicht drin, da irgendwann die Session nicht mehr mitspielen möchte. Ist lediglich ein Hinweis auf die Folgen. :)
__________________
tuxproject.de
Mit Zitat antworten
  #20  
Alt 28.01.2013, 20:13:21
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Twitter/OAuth: Autorisierung immer zweimal nötig

Zitat:
Zitat von Tuxman Beitrag anzeigen
Es sollte erst mal funktionieren und nicht schön sein.
Es ist schlecht wartbar und <zensiert> strukturiert. Zudem auch noch ein Mix zwischen Programm und Inhalt.

Zitat:
userlogin.php ist die Datei, über die wir hier die ganze Zeit reden. ;)
(Der PHP-Code von weiter oben.)
Genau. Ich war der irrigen Überzeugung, Du hättest meine Tips umgesetzt und wollte mir mal angucken, wos noch klemmt.

Zitat:
Ist ja auch noch nicht drin, ist aber vermutlich auch nicht die Ursache des Zweimaleinloggens...?
Ich hatte doch den Ablauf beschrieben. Noch mal:

1. eine existierende Session an hand der Verfallszeit korrigieren
2. wenn die Session in der Zwischenzeit gestorben ist oder der User niegelnagelneu ist: Anzeige des Login Links src: userlogin.php

3. will der User nicht, kriegt er die magere index.desktop.php Seite angezeigt. Sollte er den Link betätigen:
mittels der PECL Klasse twitter löcher in den Bauch fragen. Ist der Twitter-Login korrekt, wierden die Keys in $_SESSION gesetzt. Plus dem (1440 sec) Timestamp, damit Du die Karteileichen aussortieren kannst.

Entscheidend bei userlogin.php:
da ein Location header verwendet wird, darf kein Content produziert werden.
Ne wertvolle Hilfe dabei ist headers_sent().
PHP-Code:
$url 'http://www.example.com/'
if (!headers_sent()) {
    
header ("Location: $url");
    exit;
}else{
print_HTML_HEAD();
    echo 
"<h4><a href='$url'>Weiter...</a></h4>";
print_HTML_FOOT();

print_HTML_HEAD() gibt gibt die odere Hälfte des HTML aus, dann kommt der Link "Da gehts weiter" und print_HTML_FOOT() komplettiert den Rest.

Falls es keinen Mecker gab und kein Content (ne Fehlermeldung oder sowas) vorlag, folgt der Client dem Location Header.

Zitat:
Nö, müssen sie nicht. Ist auch, wie wir ja nun wissen, technisch gar nicht drin, da irgendwann die Session nicht mehr mitspielen möchte. Ist lediglich ein Hinweis auf die Folgen. :)
Es gibt Longlive sessions. Dazu muß allerdings die Session Config angepaßt werden, damit der Keks genauso lange lebt wie das Sessionfile.

Beachte hier den eigenen session.save_path. Verwendest Du /tmp, sind die Sessionfiles weg, weil der Nachbar eben nach 1440sec. aufräumen läßt.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:53:09 Uhr.


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


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