Main /

PHP Schnippsel

Allgemein

Knowledge Base

Virtualisierung Emulation

Technik und Wissen

Community

Privat

%center%[[http://validator.w3.org/check?uri=referer|http://www.w3.org/Icons/valid-xhtml10.png]]%%

PHP Schnippsel

/ HomePage / Computer / Software / Programmierung / Schnipsel

PHP-Schnipsel

1. if then else

 if (condition)
 {
   expression(s)
 }
 [ elseif (next condition) { ... } ]* 
 [ else { ... } ]1
  • ]* Darf beliebig oft vorkommen
  • ]1 Darf genau einmal vorkommen

2. Versionskompatibilität in der Parameterbehandlung

Folgende Zeilen erzeugen auch in älteren PHP-Verionen die $_GET und $_POST-Arrays

if (!isset($_POST)) $_POST = $GLOBALS['HTTP_POST_VARS'];
if (!isset($_GET))  $_GET  = $GLOBALS['HTTP_GET_VARS'];

3. Verteilte Directories

Ein Problem aus dem Leben gegriffen...
Man hat ein Apache(2) unter Windows laufen, zudem ein PHP und möchte ein Directory anzeigen lassen, was mit folgendem PHP Code ganz einfach ist.

<HTML><TITLE>Ich will das Directory sehen!</TITLE><BODY>

<?php
$dir = "C:";
$dh  = opendir($dir);
while (false !== ($filename = readdir($dh)))
{
   echo "$filename<BR>";
}
?>

</BODY></HTML>

Das funktioniert genau solange gut, wie das $dir auf der lokalen Platte liegt, soll nun ein entferntes Directory angezeigt werden, funktioniert das leider nicht.

Jetzt werden die UNC Pfade benötigt, also ein zusätzlicher Eintrag von open_basedir="//anderer_Rechner;C:" in der php.ini und statt $dir="T:"; dann ein $dir="//anderer_Rechner"; und schon funktioniert das auslesen des Directories.

4. Suchmaschinenfreundliche PHP-Scripte

Möchte man PHP-Scripte schreiben die wie die Seiten des ElsniWiki mit index.php/parm1/parm2 usw. aufgerufen werden kann man die Pfad-Information einfach aus der Variable $PATH_INFO auslesen, dia llerdings erst ab PHP 5 zur verfügung steht. In älteren Versionen kann man sie nachbilden. Ein Beispiel wie die Parameter ausgewertet werden, findet sich in folgendem Script test.php:

<html><body>
<?php

// $PATH_INFO ist erst ab PHP5 vorhanden, die folgende Zeile bildet die Variable in älteren Versionen nach:
$PATH_INFO= substr($_SERVER['REQUEST_URI'],strlen($_SERVER['SCRIPT_NAME']), strlen($_SERVER['REQUEST_URI']));

if(isset($PATH_INFO)) {
   $vardata = explode('/', $PATH_INFO);
   $num_param = count($vardata);
   if($num_param % 2 == 0) {
      $vardata[] = '';
      $num_param++;
   }
   for($i = 1; $i < $num_param; $i += 2) {
      $$vardata[$i] = $vardata[$i+1];
   }
}
echo '<pre>';
print_r ($vardata);
echo '</pre>';
?>
</body></html>

Wenn man nun test.php wie folgt aufruft:

http://www.meinetolledomain.de/test.php/Main/ComputerEmulation

erhält man als Ausgabe:

Array
(
[0] =>
[1] => test.php
[2] => Main
[3] => ComputerEmulation
[4] =>
)

Mehr dazu hier: http://www.zend.com/zend/spotlight/searchengine.php en

5. Excel-Dateien mit PHP erzeugen

Um eine Excel-Datei mit formatierungen zu erzeugen kann man HTML verwenden.

<?php
    header("Content-Type: application/vnd.ms-excel");
    header("Content-Disposition: attachment; filename=\"export.xls\"");
    echo '<table cellpadding="0" cellspacing="0" border="1">';
    echo '<tr><th>Spalte1</th><th>Spalte2</th></tr>';
    echo '<tr><td>wert1</td><td><b>Fett</b></td></tr>';
    echo '</table>';
?>

6. HTTP-Header manipulieren

Wenn man aus div. Gründen mal schnell den HTTP-Header manipulieren muß und grade kein CURL oder PHP-Frameworks wie z.B. Zend oder auch Symphony hat bzw. nutzen darf kann man sich der PEAR-Klasse HTTP_Request bedienen.
Ist sowieso bei so gut wie allen PHP-Installationen mit dabei:

<?php
      require_once 'HTTP/Request.php';   
      $url = "http://www.dawillichhin.com/search.xml?searchQuery=".$looking_for;

      $reqObj = new HTTP_Request($url);
      $reqObj->setHttpVer("1.0");
      $reqObj->addHeader('User-Agent' , 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; de; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.');
      $reqObj->addHeader("Accept-language" , "de-de");
      $reqObj->addHeader("Accept-Charset" , "utf-8");
      $reqObj->addHeader("Content Encoding" , "ISO-8859-1");          // für lokale M$-OS, sonst gem. encoding="
      $reqObj->addHeader("Referer" , "http://dawillichhin.com/");     // Server soll denken wir wären einem Link gefolgt

      $reqObj->sendRequest();
      $page_content = $reqObj->getResponseBody();

      echo $page_content;
?>

Wozu eigentlich der Aufwand?
Ganz einfach: einige Server schicken statt XML ein Mischmasch aus HTML anhand der HTTP-USER-AGENT-Kennung. Um das zu umgehen kann man sich kurzfristig als einen bestimmten Browser ausgeben um reines XML zu erhalten welches dann ganz bequem mit SimpleXML zerlegt werden kann.

7. Grafik, Bilder ausschneiden

siehe auch

Frische Änderungen (All) | Edit SideBar Zuletzt geändert am 23.10.2008 14:07 Uhr Seite Bearbeiten | Seitenhistorie
Powered by PmWiki