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