<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>phpsessid &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/phpsessid/</link>
	<description>Feed of posts on WordPress.com tagged "phpsessid"</description>
	<pubDate>Sun, 06 Dec 2009 02:33:56 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[SchülerVZ-Login mit PHP realisieren]]></title>
<link>http://spielor.wordpress.com/?p=62</link>
<pubDate>Sun, 05 Jul 2009 10:23:47 +0000</pubDate>
<dc:creator>spielor</dc:creator>
<guid>http://spielor.wordpress.com/?p=62</guid>
<description><![CDATA[Lieber Besucher. Ein SchülerVZ-Login mit PHP mag ja schön und gut sein, aber mittlerweile habe ich a]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><blockquote>
<h1><em>Lieber Besucher. Ein SchülerVZ-Login mit PHP mag ja schön und gut sein, aber mittlerweile habe ich auch eine » <a href="http://spielor.wordpress.com/2009/08/10/php-klasse-fur-schuler-studi-und-meinvz-1-0-0-beta/">PHP-Klasse für die VZ-Seiten veröffentlicht</a>.</em></h1>
<h2><em>Schau dort doch mal vorbei.</em></h1>
</blockquote>
<p>Aktionen im SchülerVZ durchzuführen, ist mit PHP gar nicht so einfach. Denn schließlich brauchen wir zunächst einmal eine gültige Session, und wenn wir diese nicht immer von Hand eingeben möchten (z.B. indem wir das Cookie PHPSESSID von unseren eigenen Cookies kopieren und immer in das Skript einfügen, um es mitzuliefern), müssen wir uns wohl oder übel an den Login wagen.<br />
Dieser ist auf die Handy-Version von SchülerVZ schon überall » <a href="http://blog.nessio.net/tag/schulervz/" target="_blank">weit verbreitet und ein gängiges Verfahren</a> (im Beispiel: Twitter-Nachrichten in den Buschfunk schreiben). Da hier die Funktionen aber nur begrenzt sind (es ist beispielsweise nicht möglich, neue Freunde hinzuzufügen), habe ich mich an den normalen Login gemacht. Gar nicht so einfach, denn hier ist SSL im Spiel!</p>
<p><!--more--><br />
<strong>Vorbereiten.</strong> Für mein Skript benötigen wir einen SchülerVZ-Account (wahlweise natürlich auch StudiVZ oder meinVZ), einen PHP-fähigen Webspace, der das Öffnen zu fremdem Hosts ermöglicht (die sind sehr selten, kilu und lima-city gibt es da beispielsweise &#8211; aber da wir sowas wohl eh nur für den privaten Gebrauch benötigen, nehmen wir doch einfach unseren localhost, nech? ;D) und die » <a href="http://sourceforge.net/projects/snoopy/" target="_blank">Snoopy-Klasse</a>.</p>
<p><strong>Das Skript.</strong> Das Skript ermöglicht dann den Login. Weitere Aktionen sind damit Euch überlassen, ich hoffe, ihr stellt was Nützliches damit an. (:</p>
<ol style="font-family:'Courier New', Courier, monospace;font-weight:normal;line-height:1em;">
<li>&#60;?php</li>
<li>// SchülerVZ-Login &#8211; © Spielor 2009</li>
<li></li>
<li>require_once(&#8220;snoopy.class.php&#8221;); // Hiermit wird die Snoopy-Klasse eingebunden</li>
<li>$snoopy = new snoopy; // Und hiermit verwenden wir sie.</li>
<li>$snoopy-&#62;fetch(&#8220;http://www.schuelervz.net/Login&#8221;); // Jetzt lesen wir den Quelltext der Startseite aus.</li>
<li></li>
<li>// Den brauchen wir nämlich, um 2 Schlüssel auszulesen, die für das Einloggen nötig sind (&#8220;formkey&#8221; und &#8220;iv&#8221;).</li>
<li>preg_match(&#8216;&#124;&#60;input type=&#8221;hidden&#8221; name=&#8221;formkey&#8221; value=&#8221;([^"]*)&#8221;[^&#60;]*&#60;input type=&#8221;hidden&#8221; name=&#8221;iv&#8221; value=&#8221;([^"]*)&#124;i&#8217;, $snoopy-&#62;results, $key);</li>
<li></li>
<li>// Anmeldedaten</li>
<li>$vars['email']     = &#8220;E-Mail&#8221;;    // Die E-Mail-Adresse</li>
<li>$vars['password']  = &#8220;Passwort&#8221;;  // Das Passwort</li>
<li>$vars['reminder']  = &#8220;1&#8243;;         // An die Sitzung erinnern? Dieser Wert ist optional</li>
<li>$vars['jsEnabled'] = &#8220;false&#8221;;     // Soll Javascript aktiviert oder deaktiviert sein? Ist Euch überlassen</li>
<li>$vars['formkey']   = $key[1];     // Der formkey-Schlüssel</li>
<li>$vars['iv']        = $key[2];     // Der iv-Schlüssel</li>
<li>$vars['login']     = &#8220;Einloggen&#8221;; // Das ist zwar nur der Text eines Buttons, aber ohne geht nicht! login=Einloggen ist nötig.</li>
<li></li>
<li>// Anmelden</li>
<li>$snoopy-&#62;submit(&#8220;https://secure.schuelervz.net/Login&#8221;, $vars);</li>
<li>// Hiermit wurde der Snoopy-Klasse befohlen, das Formular mit den Daten aus obigen Array ($vars) abzuschicken</li>
<li></li>
<li>// Jetzt durchsuchen wir die Header-Daten. Dazu machen wir zunächst einmal das Array zum String.</li>
<li>for($o = 0; $o != count($snoopy-&#62;headers); $o++)</li>
<li>{</li>
<li> $headers .= $snoopy-&#62;headers[$o];</li>
<li>}</li>
<li>$cookie = preg_match(&#8220;&#124;Set-Cookie: PHPSESSID=([^;]*);&#124;Usi&#8221;, $headers, $cookieres); // Nun suchen wir mit Regex die Cookies &#8220;PHPSESSID&#8221;&#8230;</li>
<li>$cookie = preg_match(&#8220;&#124;Set-Cookie: Login_UserToken=([^;]*);&#124;Usi&#8221;, $headers, $logintoken); // &#8230; und &#8220;Login_UserToken&#8221;</li>
<li>// Damit ist das Cookie &#8220;PHPSESSID&#8221; und der Login-Token unter $cookieres[1] und $logintoken[1] gespeichert.</li>
<li></li>
<li>// Ab hier können wir eigene Aktionen durchführen, die Sitzung steht. Dabei ist es &#8211; glaube ich &#8211; immer nötig, beide Cookies mitzuliefern!</li>
<li>?&#62;</li>
</ol>
<p><strong>Beispiele.</strong> Hier noch einige Aktionsbeispiele, die sich damit umsetzen lassen. Die ID » <a href="http://www.schuelervz.net/Profile/fefc6cc14337284a" target="_blank">fefc6cc14337284a</a> gehört übrigens zu einem scheinbaren Namensvetter meiner Wenigkeit. (: Der scheint im SchülerVZ-Team zu sein, deswegen hab ich den mal genommen. Ist ja immer noch am representativsten, eine offizielle Person zu nehmen &#8211; damit durch die angewendeten Beispiele nicht einfach irgendwer genervt wird, sondern wenigstens einer aus der Obrigkeit. ;D</p>
<ol style="font-family:'Courier New', Courier, monospace;font-weight:normal;line-height:1em;">
<li>&#60;?php</li>
<li>// Codebeispiele nach bestehendem SchülerVZ-Login &#8211; © 2009 Spielor</li>
<li></li>
<li>// Startseite auslesen</li>
<li>$snoopy = new snoopy;</li>
<li>$snoopy-&#62;cookies["PHPSESSID"] = $cookieres[1]; // Cookie &#8220;PHPSESSID&#8221; setzen</li>
<li>$snoopy-&#62;cookies["Login_UserToken"] = $logintoken[1]; // Cookie &#8220;Login_UserToken&#8221; setzen</li>
<li>$snoopy-&#62;fetch(&#8220;http://www.schuelervz.net/Start&#8221;);</li>
<li>echo $snoopy-&#62;results;</li>
<li></li>
<li>// Profilseite auslesen (könnte dann ausgewertet werden)</li>
<li>$snoopy = new snoopy;</li>
<li>$snoopy-&#62;cookies["PHPSESSID"] = $cookieres[1];</li>
<li>$snoopy-&#62;cookies["Login_UserToken"] = $logintoken[1];</li>
<li>$snoopy-&#62;fetch(&#8220;http://www.schuelervz.net/Profile/fefc6cc14337284a&#8221;);</li>
<li>echo $snoopy-&#62;results;</li>
<li></li>
<li>// Neuen Freund einladen</li>
<li>$snoopy = new snoopy;</li>
<li>$snoopy-&#62;cookies["PHPSESSID"] = $cookieres[1];</li>
<li>$snoopy-&#62;cookies["Login_UserToken"] = $logintoken[1];</li>
<li>$vars['id']      = &#8220;fefc6cc14337284a&#8221;; // Die ID der Person, die eingeladen werden soll</li>
<li>$vars['formkey'] = $key[1]; // &#8220;formkey&#8221;&#8230;</li>
<li>$vars['iv']      = $key[2]; // &#8230; und &#8220;iv&#8221;</li>
<li>$snoopy-&#62;submit(&#8220;http://www.schuelervz.net/Friends/Add/fefc6cc14337284a&#8221;, $vars);</li>
<li></li>
<li>// In den Buschfunk schreiben</li>
<li>$snoopy = new snoopy;</li>
<li>$snoopy-&#62;cookies["PHPSESSID"] = $cookieres[1];</li>
<li>$snoopy-&#62;cookies["Login_UserToken"] = $logintoken[1];</li>
<li>$vars['formkey'] = $key[1];</li>
<li>$vars['iv']      = $key[2];</li>
<li>$vars['text']    = &#8220;Ich bin der Tollste!&#8221;; // Buschfunk-Nachricht</li>
<li>$snoopy-&#62;submit(&#8220;http://www.schuelervz.net/Start/tid/101&#8243;, $vars);</li>
<li>?&#62;</li>
</ol>
<p>Wichtig ist noch, dass ihr das $key-Array (also &#8220;formkey&#8221; und &#8220;iv&#8221;) regelmäßig aktualisiert. Soviel ich weiß, variieren diese Schlüssel zwar auch untereinander, das ist allerdings irrelevant. Sprich, wenn ihr z.B. in den Buschfunk etwas eintragen wollt, müsst ihr mindestens einmal den form-Schlüssel und den iv-Schlüssel aus dem Buschfunk-Formular auslesen, wenn ihr einen Freund hinzufügen wollt, aus dem Freundhinzufüg-Formular, usw. D.h., ihr braucht nicht immer wieder neue Schlüssel, aber jedes Formular/jeder Aktionstyp benötigt seinen eigenen, individuellen Schlüssel. Ihr könnt also mehrmals (unendlich oft?) mit denselben Schlüsseln eine Buschfunk-Nachricht schreiben, aber mit diesen Schlüsseln nicht auch Freunde hinzufügen, dafür bedarf es neuer Schlüssel.<br />
Wenn ihr auf Nummer Sicher gehen wollt, solltet ihr sowieso auch immer mal wieder die Schlüssel aktualisieren, ich hab nicht genau getestet, wie lange einer gültig ist.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Submit a form and reload the page without the form]]></title>
<link>http://jez007.wordpress.com/2007/12/17/submit-a-form-and-reload-the-page-without-the-form/</link>
<pubDate>Mon, 17 Dec 2007 15:48:24 +0000</pubDate>
<dc:creator>Jez D</dc:creator>
<guid>http://jez007.wordpress.com/2007/12/17/submit-a-form-and-reload-the-page-without-the-form/</guid>
<description><![CDATA[Had an issue recently with a university project where my team wanted to have a contact form on a web]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="font-family:Verdana, Arial, Helvetica, sans-serif;color:#000000;line-height:2;font-size:1.2em;">Had an issue recently with a university project where my team wanted to have a contact form on a webpage, to capture the usual contact info from website visitors. However, this would take us to the maximum number of pages allowed, and so, we could not have a &#8220;thanks, message sent&#8221; page.</p>
<p style="font-family:Verdana, Arial, Helvetica, sans-serif;color:#000000;line-height:2;font-size:1.2em;">
Here&#8217;s how I did it:</p>
<ol style="font-family:Verdana, Arial, Helvetica, sans-serif;color:#000080;line-height:2;font-size:1.2em;">
<li>When the page containing the form loads, it checks if $_SESSION is set for form. If not, it<br />
displays the form within the page, otherwise displays a custom message in the page &#8211; but<br />
no form.</li>
<li>When the form is submitted, the script sets $_SESSION for the form and then reloads the<br />
page. This has the added advantage that the form cannot easily be submitted umteen times.</li>
</ol>
<p style="font-family:Verdana, Arial, Helvetica, sans-serif;color:#000000;line-height:2;font-size:1.2em;">
Ok.Your form needs to contain something like this:</p>
<p><font color="#000080"><br />
&#60;?php</font></p>
<p><font color="#000080">session_start(); </font><font color="#000080">//Set Session Data.<br />
</font></p>
<p><font color="#000080">if (isset($_SESSION['form_name'])){ //this line checks if session id is set<br />
</font></p>
<p><font color="#000080"> //if session ID is set, form has already been sent so display custom message</font></p>
<p><font color="#000080">echo &#8216;&#60;br /&#62;Your email has been sent, thanks.&#60;br /&#62;&#60;br /&#62;&#8217;;<br />
} else {//session ID not set so display form<br />
</font></p>
<p><font color="#000080"> //Put form HTML in here</font></p>
<p><font color="#000080">}<br />
?&#62;<br />
</font></p>
<p style="font-family:Verdana, Arial, Helvetica, sans-serif;color:#000000;line-height:2;font-size:1.2em;">The form sends the data to a script called send_form.php, which looks like this:</p>
<p><font color="#000080">&#60;?php</font></p>
<p><font color="#000080">//Set Session Data<br />
session_start();//this line sends a cookie called PHPSESSID</font></p>
<p><font color="#000080">//insert here script to validate &#38; send data</font></p>
<p><font color="#000080">$_SESSION['form_name'] = TRUE;  // set session ID for the form </font></p>
<p><font color="#000080">//Next, relaod the same page</font><br />
<font color="#000080">print &#8220;&#60;meta http-equiv=\&#8221;refresh\&#8221; content=\&#8221;0;URL=page.php\&#8221;&#62;&#8221;; </font></p>
<p><font color="#000080">?&#62;<br />
</font></p>
<p style="font-family:Verdana, Arial, Helvetica, sans-serif;color:#000000;line-height:2;font-size:1.2em;">I tested it on the wireframe and it worked fine.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
