[B] PHP Snippets

10/16/2012 20:46 mSchim#1
Hallo zusammen,

ich bin mir nicht wirklich sicher, ob das hier hingehört, wenn nicht bitte moven.

Ihr kennt das - Ihr wollt was coden, Ihr wüsstet eigentlich auch wie es geht, aber dann vergesst Ihr es plötzlich. Deswegen möchte ich hier eine kleinere Zusammenfassung nützlicher PHP-Scripts vorstellen, die sich im Laufe der Jahre bei mir so angesammelt haben. In fernerer Zukunft wird es dazu auch ein Archiv mit Example-Dateien geben, sodass Ihr alles direkt auf eurem XAMPP ausprobieren könnt.

Beachtet bitte, dass ich diese Sammlung nach und nach erweitern werde und jetzt erst mal mit 2 etwas kleineren Dingen anfange, also bitte diesbezüglich keine bösen Kommentare, danke.

Die Snippets sind NICHT alle eigenhändig von mir programmiert, viele wurden mit der Zeit ergoogelt und/oder von mir verändert/angepasst, wenn möglich mache ich hier jedoch Quellangaben.

Einen Switch erstellen

Sicherlich habt Ihr es schon mal gesehen: [Only registered and activated users can see links. Click Here To Register...]. Aber wie macht man so etwas? Mit Cases und einem Switch.

PHP Code:
<?php

switch($_GET['id'];) {
case 
1: echo "Seite 1"; break;
case 
2: echo "Seite 2"; break;
case 
3: echo "Seite 3"; break;
}

?>
Das geht aber noch mit ganz anderen Sachen. Hatt man beispielsweiße einen Wert kann man auch statt $_GET[... einfach den Wert oder das $_POST Feld abfragen und aufgrund von Möglichkeiten Entscheidungen treffen lassen.

Eine Mail senden lassen

Beachtet bitte, dass das sehr warscheinlich nicht auf eurer lokalen XAMPP-Distri laufen wird, da der schlichtweg nur über extreme Umwege sendmail(); unterstützt.

Als erstes benötigt Ihr eine Form, in der irgendwelche Daten eingetragen werden sollen.

HTML Code:
<form action="sendmail.php" method="post">
  <label>Name:</label>
  <input type="text" name="name" id="name" />

  <label>Email:</label>
  <input type="text" name="email" id="email" />

  <label>Nachricht:</label><br />
  <textarea name="message" rows="20" cols="20" id="message"></textarea>

  <input type="submit" name="Absenden" value="Submit" />
</form>
Diese Form "reserviert" uns im entferntesten Sinne einige Values, nämlich "name", "email" und "message".

Nun brauchen wir noch eine "sendmail.php"-Datei mit folgendem Inhalt:

PHP Code:
<?php
       
// from the form
       
$name trim(strip_tags($_POST['name']));
       
$email trim(strip_tags($_POST['email']));
       
$message htmlentities($_POST['message']);
       
$subject "Kontaktformular";
       
$to '[Only registered and activated users can see links. Click Here To Register...]'// hier wird die Empfängeradresse eingetragen

       
$body = <<<HTML
$message
HTML;

       
$headers "From: $email\r\n";
       
$headers .= "Content-type: text/html\r\n";

       
// Senden der eigentlichen Mail
       
mail($to$subject$body$headers);

       
// Redirect auf Seite im selben Verzeichnis
       
header('Location: index.php?step=thanks');
?>
Lesen und Schreiben von Dateien

Dieses Script ist einfach und nützlich zugleich, als Beispiel werde ich hier einen Text-Counter darstellen, der mithilfe von einer counter.txt-Datei auf eurem Server ausgeben kann, wie oft eine Datei aufgerufen wurde (ohne IP/Cookie Sperre).

PHP Code:
<?php
$count 
= (“count.txt”);
$hits file($count);
$hits[0] ++;
$fp fopen($count “w”);
fputs($fp “$hits[0]);
fclose($fp);
echo 
$hits[0];
?>
Zu guter Letzt included man die Datei noch an irgendeiner Stelle mit

PHP Code:
Du bist Besucher <?php include('filename.php'); ?>
Counter mit Reload-Sperre dank Cookie

Quelle: [Only registered and activated users can see links. Click Here To Register...]

Am Anfang der Datei muss folgender Code stehen:

PHP Code:
<?php 
session_set_cookie_params
(10800);
session_start(); 
?>
Der eigentliche Counter orientiert sich relativ am oben angeführten Counter.

PHP Code:
<?php
$datei 
fopen("counter.txt","r+");
$counterstand fgets($datei10);

if(
$counterstand == "")
   {
   
$counterstand 0;
   }

if(!isset(
$_SESSION['counter_ip']))
   {
   
$counterstand++;
   
rewind($datei);
   
fwrite($datei$counterstand);
   
$_SESSION['counter_ip'] = true;
   }

echo 
$counterstand;
fclose($datei);
?>
Vorteil hiervon ist, dass eine Session registriert ist und beim nächsten Aufruf des Scripts bleibt der Wert des Counters unverändert.



Wie oben bereits geschrieben werde ich den Beitrag hier stetig mit kleineren Snippets ergänzen. Falls Ihr wünsche habt, schreibt mir eine PN oder (lieber) hier im Beitrag, dann kann ich dementsprechend agieren. Gerne auch umfangreicheres.

LG,
mSchim
10/16/2012 21:40 boxxiebabee#2
Für 4 grundlegende Sachen muss man nun wirklich nicht nen eigenen Thread aufmachen. Wennschon gehört das in Releases oder Tutorials.
10/16/2012 22:00 mSchim#3
Quote:
Originally Posted by boxxiebabee View Post
Für 4 grundlegende Sachen muss man nun wirklich nicht nen eigenen Thread aufmachen. Wennschon gehört das in Releases oder Tutorials.
Wenn du richtig gelesen hättest, dann wüsstest du, dass es mehr werden mit der Zeit. Habe leider etwas anderes zu tun als hinrlos Copy/Paste zu betreiben sondern möchte ein wenig auf den Code eingehen.
10/16/2012 23:11 マルコ#4
nunja.... ich sag mal nur [Only registered and activated users can see links. Click Here To Register...] . Und so wirklich Basic Sachen wie switch sollte man können. Bei mail gibt es autovervollständigung der IDE oder wieder im Handbuch nachschaun.
Und wenn man nen Counter mit Cookiesperre will.... GOOGLE
10/17/2012 00:30 tayfe#5
Quote:
Bei mail gibt es autovervollständigung der IDE oder wieder im Handbuch nachschaun.
Und wenn man nen Counter mit Cookiesperre will.... GOOGLE
Oder man spart sich den "Aufwand" und guckt einfach hier in den Thread ;)

Ich verstehe nicht, was ihr dagegen habt? Es mag für euch vielleicht überflüssig sein, aber manchen Leuten ist das vielleicht wiederrum eine Hilfe.

Quote:
Für 4 grundlegende Sachen muss man nun wirklich nicht nen eigenen Thread aufmachen.
Und dieser Thread schadet ja auch absolut niemandem! Wenn mSchim daran Spaß hat, soll er das doch gerne machen dürfen, egal ob ihr das jetzt braucht oder nicht. Und wenn man solch eine "Bibliothek" auch wirklich kontinuirlich weiter ausbaut, kann so etwas meiner Meinung nach sogar sehr sinvoll sein.
Google ist auch nur eine Suchmaschine, die etwas aus bereits vorhandenen Sammlungen raus sucht. Und wenn man die Sammlung hier wirklich gut ausbaut, dann wirst du mit Google vermutlich direkt hier auf diesen Thread stoßen.

Ich sehe kein Problem darin, dass er eine solche Sammlung angelegt. Sicherlich bedarf diese noch einigen Ergänzungen, aber diese wird er ja wie bereits in seinem ersten Post angekündigt noch hinzufügen.
10/17/2012 01:28 マルコ#6
Diese "Sammlung" ist viel zu unübersichtlich. Ich bleib da lieber bei HOMEPAGES (keine Foren), die das machen.
Zudem ist die Frage, wie gut alles erklärt wird.
Bei mail() sollte man z.B. hinzufügen, wie UTF-8 codierte Mails, oder HTML Mails verschickt werden können.

Bei dem Dateilesen ist es Pflicht, den Filemode zu erklären, und warum dort ein Array verwendet werden kann. Außerdem sollte man hinzufügen, iwe man die ganze Datei lesen kann, oder nur was vorne oder hinten dran hängt etc....

usw.

Meiner Meinung nach viel zu viel Arbeit, zumal das alles schon schöner wo anders festgehalten wurde.
10/17/2012 22:16 mSchim#7
Quote:
Originally Posted by マルコ View Post
Diese "Sammlung" ist viel zu unübersichtlich. Ich bleib da lieber bei HOMEPAGES (keine Foren), die das machen.
Zudem ist die Frage, wie gut alles erklärt wird.
Bei mail() sollte man z.B. hinzufügen, wie UTF-8 codierte Mails, oder HTML Mails verschickt werden können.

Bei dem Dateilesen ist es Pflicht, den Filemode zu erklären, und warum dort ein Array verwendet werden kann. Außerdem sollte man hinzufügen, iwe man die ganze Datei lesen kann, oder nur was vorne oder hinten dran hängt etc....

usw.

Meiner Meinung nach viel zu viel Arbeit, zumal das alles schon schöner wo anders festgehalten wurde.
Guten Abend,

danke für deine Kritik. Ich werde das berücksichtigen und ggf. am Wochenende ergänzen. Ich dachte nicht mehr an solche Details...