• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

FAQ - Frequently Asked Questions (PHP)

Status
Für weitere Antworten geschlossen.

Prophet

Super-Moderator
Moderator
Zuletzt bearbeitet von einem Moderator:
Werbung:
Wie inkludiere ich Dateien über den URL?

Wie inkludiere ich Dateien über den URL?

Grundsaetzlich gibt es 3 Möglichkeiten:
  • Die "Switch" Methode
  • Einsperren in ein Verzeichnis [chroot]
  • Das Arbeiten mit Arrays

Die Lösung mit switch
Das Verzeichnis:
  • index.php
  • kontakt.php
  • news.php
  • haupt.php
Der URL:
index.php?datei=kontakt
Das PHP Script:
PHP:
<?php
switch ($_GET['datei']) {
    case "kontakt":
        include 'kontakt.php';
        break;
    case "news":
        include 'news.php';
        break;
    // ... und so weiter

    // die standard datei
    default:
        include 'haupt.php';
}
?>
Jetzt ist es hier aber so, dass sowas ziemlichen aufwand bedeutet, wenn du mehrere dateien hinzufuegen willst (du muesstest ja immer wieder das selbe tippen - NICHT EFFIZIENT). Deshalb hier 2 effizientere methoden:

Auf ein Verzeichnis beschränken
Indem du das include auf ein verzeichnis beschraenkst, aus dem der besucher nicht "ausbrechen" kann - somit kannst du dort alle zu inkludierenden dateien rein tun, und bist hiermit abgesichert.

Das Verzeichnis:

  • index.php
    include\kontakt.php
    include\haupt.php
    include\news.php
Der URL:
index.php?datei=kontakt
Das PHP Script:
PHP:
<?php
include 'include/' . basename($_GET['datei']) . '.php';
?>

Eine andere, und meine persoenliche lieblingsmethode ist eine umschreibung, bzw. reduzierung eines switches auf einen array. klingt jetzt mega-kompliziert, aber ist viel einfacher als alles andere :)

Reduzierung auf ein Array
Das Verzeichnis:
  • index.php
  • haupt.php
  • news.php
  • kontakt.php
Der URL:
index.php?datei=kontakt
Das PHP Script:
PHP:
<?php
$whiteList = array('haupt','news','kontakt');

if (in_array($_GET['datei'],$whiteList)) {
 include $_GET['datei'].'.php';
}
else {
 include $whiteList[0].'php';
}
?>
Das prinzip einer sogenannten "White-List" (Wikipedia: Whitelist) ist hier besonders effizient und bedienerfreundlich angewendet. Wenn ich eine seite mit 200 zu inkludierenden dateinamen habe, muss ich nur jedes mal den dateinamen in die array schreiben, nicht das ganze 'case "dateiname"' ... usw usw. Die wenigen zeilen darunter bleiben bestehen, und muessen nicht erweitert werden.

Anmerkungen:
1) Falls keinerlei php code "includiert" werden soll bietet sich die Benutzung von readfile() [ www.php.net/readfile ] an um Sicherheitslücken zu vermeiden.

2) Die Lösung mit den Arrays lässt sich noch aufbohren:
PHP:
<?php
$whiteList = array(
    'haupt' => '../includes/data/main.content',
    'news' => '../includes/database/news.php',
    'kontakt' => '../includes/static/contact.content'
);
if(array_key_exists('datei', $_GET)) {
  if (array_key_exists($_GET['datei'],$whiteList)) {
    include $whiteList[$_GET['datei']];
  }
  else {
    include $whiteList['haupt'];
  }
}
else {
    include $whiteList['haupt'];
}
?>

Dieses Tutorial stammt ursprünglich von raphaelp und wurde von niklasboelter überarbeitet. Vielen Dank an dieser Stelle!
 
Zuletzt bearbeitet:
Wie kann ich selber BB-Code auswerten?

Wie kann ich selber BB-Code auswerten?

Naja für was BB-Code ist brauche ich, denke ich, nicht weiter erklären.
Da ich für dieses Tutorial preg_replace und für weitere preg_match verwenden werde, rate ich euch dieses PerlRegExp-Tutorial durchzulesen, da man es dort sehr gut versteht und erlernt.
PHP:
<?php
$string = "[b]Fetter Text[/b] und [u]unterstrichener Text[/u] usw...bin jetz zu faul [i]alles aufzuschreiben[/i]"; # denkt euch die leerzeichen in den BB-Codes bitte weg
#start der Funktion des bbcodes
function bbcode($str)
{
 $str = preg_replace("!\[b\](.*)\[/b\]!isU","<b>$1</b>",$str); #überprüft den code auf [b] und [/b] wenn beides vorhanden ist, ersetzt er es mit [b]
 $str = preg_replace("!\[i\](.*)\[/i\]!isU","<i>$1</i>",$str); #selbiges mit [i] / [/i]
 $str = preg_replace("!\[u\](.*)\[/u\]!isU","<u>$1</u>",$str); #und nochmal mit unterstreichen
 $str = preg_replace("!\[url\](.*)\[/url\]!isU","<a href=\"$1\">$1</a>",$str); #das ist die möglichkeit eines links mit der nur die url angezeigt ist
 $str = preg_replace("!\[url=(.*)\](.*)\[/url\]!isU","<a href=\"$1\">$2</a>",$str); #und hiermit kann man einen link machen, dem man einem namen geben kann
return $str;
}
echo bbcode($string);
?>

Dieses kleine Tutorials stammt ursprünglich von CrackPod und wurde von mir überarbeitet.
 
Zuletzt bearbeitet:
Werbung:
Wie kann ich den Browser des Users herausfinden?

Wie kann ich den Browser des Users herausfinden?

Da man für manche Sachen den Browser des Users, der sich auf der Seite befindet, braucht, aber getenv("HTTP_USER_AGENT"); einiges mehr als nur den Browser zurückgibt, braucht man ein kleines script, damit man die Browser herausfiltern kann. (Dieses Script basiert auf preg_match, wozu dieses PerlRegExp-Tutorial lesen sollte)
PHP:
<?php
$browser = getenv("HTTP_USER_AGENT"); #liest den Browser des users aus
echo $browser; # und gibt ihn aus
echo "
Sie benutzen den "; #einleitungstext, zur bestimmung des Browsers
if(preg_match("/^(mozilla)(.*)(firefox|ie|opera|netscape)/i",$browser)) #1.kontrolle darauf ob nach Mozilla(was immer am anfang steht) noch Firefox Internetexplorer Opera oder Netscape steht, damit man später auch den Mozilla herausfiltern kann, da dieser Browser keine spezifischen strings hat.
{
 if(preg_match("/firefox(.*)/i",$browser)) echo "Firefox Browser"; #falls firefox vorkommt wird das ausgegeben
 if(preg_match("/(ie)(.*)(\))$/i",$browser)) echo "Internet Explorer"; #für den IE
 if(preg_match("/opera/i",$browser)) echo "Opera Browser"; #für opera
 if(preg_match("/netscape/i",$browser)) echo "Netscape Browser"; #für NS
}
else
{
 echo "Mozilla Browser"; #falls nach mozilla nichts mehr kommt wird schlussendlich mozilla ausgegeben.
}
echo "
";
echo getenv("REMOTE_ADDR"); #hier wird dann noch die ip ausgegen.
?>
Man kann die sache z.b. für Counter oder dergleichen benutzen je nachdem was man vorhat... Man kann es auch als funktion machen die dann $browser oder so zurückgibt

Dieses kleine Tutorials stammt ursprünglich von CrackPod und wurde von mir überarbeitet.
 
Zuletzt bearbeitet:
Wie kann ich wirklich alle Fehler sehen?

Wie kann ich wirklich alle Fehler sehen?

Naja wenn ihr mal Probleme mit einem Script habt, dann fügt ganz zu Anfang eures PHP-Codes das hier ein:
PHP:
<?php
error_reporting(E_ALL);
?>
Nun werden wirklich alle Fehler und nicht nur schwereren angezeigt.

Anmerkung:
Hier wird auf PHP4 bezug genommen, in PHP5 würden noch die Fehler der Klasse E_STRICT fehlen.
Mehr Informationen dazu gibt auf PHP.NET.

Dieses kleine Tutorials stammt ursprünglich von CrackPod und wurde von mir überarbeitet.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben