PHP // Log-In System

10/15/2011 14:17 ShapyShape#1
Moin , Elitepvpers

Heute will ich euch zeigen, wie man in PHP einen ganz einfachen Login Erstellt.
Hoffe es wird euch gefallen & bzw hoffentlich hilft es euch.

~Vorwort~

Schritt 1: Neuer Account

Zuerst möchten wir mit dem Script einen neuen Account anlegen, damit sich der User evt. später von alleine Registieren kann.

Dazu brauchen wir ein ganz normales HTML-Formular mit 3 Feldern.
Einmal ein Feld wo man seinen Benutzernamen (Name: username) eingibt, dann ein Feld wo man sein Passwort eingibt (Name: passwort) und noch ein Feld, wo man sein Passwort bestätigt (Name: passwort2).

Das sieht ca. so aus:

Code:
<form action="eintragen.php" method="post">
Dein Username:<br>
<input type="text" size="24" maxlength="50"
name="username"><br><br>

Dein Passwort:<br>
<input type="password" size="24" maxlength="50"
name="passwort"><br>

Passwort wiederholen:<br>
<input type="password" size="24" maxlength="50"
name="passwort2"><br>

<input type="submit" value="Abschicken">
</form>

Jetzt kommen wir zum intressanten Teil, dem PHP Script. Dieser Script soll den Benutzername und das Passwort nur speichern.

Zuerst fragen wir die eingegebenden Daten ab:


Code:
<?php
$username = $_POST["username"];
$password = $_POST["passwort"];
$password2 = $_POST["passwort2"];
?>

Danach überprüfen wir zuerst, ob überhaupt die beiden Passwörter identisch sind, dafür benutzen wir einfach eine if-Anweisung.

Natürlich wollen wir auch verhindern, das ein Benutzername doppelt vorkommt, sonst gibt es später beim Login Probleme, deswegen erstellen wir ein leeren Array.

Zum schluss verschlüsseln wir noch das Passwort mit der Funktion md5.


Code:
<?php
if ($password == $password2)
   {
   $user_vorhanden = array();
   $passwort = md5($password);
   }
else
   {
   echo "Die Passwörter waren nicht identisch
   <br><a href=\"eintragen.html\">zurück</a>";
   }
?>

Jetzt wollen wir ja nachgucken, ob es den Benutzernamen schon gibt, deswegen öffnen wir die Datei, in der die Benutzernamen und Passwörter gespeichert werden.
Diese Befehle müssen jetzt natürlich auch noch alle in den if Teil.


Code:
<?php
if ($password == $password2)
   {
   $user_vorhanden = array();
   $passwort = md5($password);

   $userdatei = fopen ("user.txt","r");
   while (!feof($userdatei))
      {
      $zeile = fgets($userdatei,500);
      $userdata = explode("|", $zeile);
      array_push ($user_vorhanden,$userdata[0]);
      }
   fclose($userdatei);
   }
?>

Wir öffnen jetzt die Datei, und lesen sie immer Stück für Stück aus. Dabei legen wir nur den Benutzernamen in das Array $user_vorhanden ab.
Wenn in dem Array alle Benutzernamen gespeichert wurden, wird die Datei noch geschlossen.

Jetzt haben wir alle Benutzernamen in dem Array $user_vorhanden, aber jetzt wollen wir gucken, on der Benutzername schon vorhanden ist. Dafür können wir doch ganz einfach in_array benutzen.
Dieser Befehl muss auch wieder in den ersten if-Teil, denn wir wollen die Befehle ja nur ausführen lassen, wenn die Passwörter identisch waren.

Die if-Anweisung sieht jetzt so aus:

Code:
<?php
if ($password == $password2)
   {
   $user_vorhanden = array();
   $passwort = md5($password);

   $userdatei = fopen ("user.txt","r");
   while (!feof($userdatei))
      {
      $zeile = fgets($userdatei,500);
      $userdata = explode("|", $zeile);
      array_push ($user_vorhanden,$userdata[0]);
      }
   fclose($userdatei);

   if (in_array($username,$user_vorhanden))
      {
      echo "Username schon vorhanden <br>
      <a href=\"eintragen.html\">zurück</a>";
      }
   }
?>

Mit in_array schauen wir ob $username, dieser Wert stammt aus dem Formular, schon in dem Array gespeichert wurden, wenn dies nicht der Fall ist, brauchen wir else..
Diese Anweisungen stehen immer noch im ersten if Teil.

Code:
<?php
if ($password == $password2)
   {
   $user_vorhanden = array();
   $passwort = md5($password);

   $userdatei = fopen ("user.txt","r");
   while (!feof($userdatei))
      {
      $zeile = fgets($userdatei,500);
      $userdata = explode("|", $zeile);
      array_push ($user_vorhanden,$userdata[0]);
      }
   fclose($userdatei);

   if (in_array($username,$user_vorhanden))
      {
      echo "Username schon vorhanden <br>
      <a href=\"eintragen.html\">zurück</a>";
      }

   else
      {
      $eintrag ="$username|$passwort";
      $userdatei = fopen ("user.txt","a");
      fwrite($userdatei, "$eintrag\n");
      fclose($userdatei);
      echo "$username, deine Anmeldung war
      erfolgreich<br>
		<a href=\"login.html\">zum Login</a>";
      }
   }
else
   {
   echo "Die Passwörter waren nicht identisch <br>
   <a href=\"eintragen.html\">zurück</a>";
   }
?>
Jetzt speichern wir den Benutzername und das verschlüsselte Passwort in der Text-Datei user.txt. Wenn Ihr diesen Script benutzt, sollte keiner den Namen der Datei wissen, damit man Useraccounts nicht so leicht hacken kann.

Der fertige Script sieht dann so aus (eintragen.php):

Code:
<?php
$username = $_POST["username"];
$password = $_POST["passwort"];
$password2 = $_POST["passwort2"];

if ($password == $password2)
   {
   $user_vorhanden = array();
   $passwort = md5($password);

   $userdatei = fopen ("user.txt","r");
   while (!feof($userdatei))
      {
      $zeile = fgets($userdatei,500);
      $userdata = explode("|", $zeile);
      array_push ($user_vorhanden,$userdata[0]);
      }
   fclose($userdatei);

   if (in_array($username,$user_vorhanden))
      {
      echo "Username schon vorhanden <br>
      <a href=\"eintragen.html\">zurück</a>";
      }

   else
      {
      $eintrag ="$username|$passwort";
      $userdatei = fopen ("user.txt","a");
      fwrite($userdatei, "$eintrag\n");
      fclose($userdatei);
      echo "$username, deine Anmeldung war erfolgreich
      <br><a href=\"login.html\">zum Login</a>";
      }
   }
?>

Schritt 2: Login
Jetzt kommen wir zum Login.
Dafür brauchen wir natürlich wieder ein Formular mit zwei Feldern (Username und Passwort mit den Namen: username und password).
Ca so:

Code:
 <form action="login.php" method="post">
Dein Username:<br>
<input type="text" size="24" maxlength="50"
name="username"><br><br>

Dein Passwort:<br>
<input type="password" size="24" maxlength="50"
name="password"><br>

<input type="submit" value="Login">
</form>

Das Formular ist weiter nicht intressant, aber der PHP Script. Wie immer fragen wir zuerst die beiden Felder ab, und verschlüsseln das Passwort mit der md5-Funktion.
Außerdem geben wir der Variable $log noch den Inhalt 0, warum werdet Ihr später sehen.


Code:
<?php
$username = $_POST["username"];
$passwort = $_POST["password"];
$passwort = md5($passwort);
$log = 0;
?>
Im nächsten Schritt öffnen wir die Datei (user.txt) und lesen diese immer nach und nach.
Dabei trennen wir wieder den Benutzername von dem Passwort, damit wir beides überprüfen können.
Dann schauen wir, ob die Eingaben aus dem Formular mit denen aus der Datei übereinstimmen.
Wenn dies der Fall ist, wird der Variable $log der Inhalt 1 zugeordnet.


Code:
<?php
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
   {
   $zeile = fgets($userdatei,500);
   $userdata = explode("|", $zeile);

   if ($userdata[0]==$username and
   $passwort==trim($userdata[1]))
      {
      echo "Hallo $username";
      $log = 1;
      }
   }
fclose($userdatei);
?>

Aber warum steht da $passwort==trim($userdata[1])?
Ganz einfach, mit trim entfernen wir am Anfang und am Ende des Passwortes überflüssige Zeichen, z.B. Leerzeichen und auch ein Zeilenumbruch.
Wir müssen dies machen, weil die Passwörter immer mit einem Zeilenumbruch am Ende gespeichert werden.
Würden wir dies nicht machen, würde der Script nicht funktionieren, weil ein Wort mit einem Zeilenumbruch am Ende nicht das gleiche Wort ist, als wenn es keinen Zeilenumbruch hat.

Wenn jetzt das Passwort und der Benutzername richtig ist, gelangt der User in den Userbereich (hier: Hallo $username).

Wenn kein Benutzername bzw. Passwort passt, dann hat die Variable $log immer noch den Inhalt 0.

Das können wir wiederrum mit einer if-Anweisung überprüfen.
Code:
<?php
if ($log==0)
   {
   echo "Zugriff verweigert";
   }
?>
Das wars auch schon.

Am Ende sieht die Datei so aus:


Code:
<?php
$username = $_POST["username"];
$passwort = $_POST["password"];
$passwort = md5($passwort);

$log = 0;
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
   {
   $zeile = fgets($userdatei,500);
   $userdata = explode("|", $zeile);

   if ($userdata[0]==$username and
   $passwort==trim($userdata[1]))
      {
      echo "Hallo $username";
      $log = 1;
      }
   }
fclose($userdatei);

if ($log==0)
   {
   echo "Zugriff verweigert";
   }
?>
Noch ein Tipp:
In der Datei, in der die Passwörter gespeichert werden, die sollte immer geheim bleiben.


Thanks Muss nicht sein.
10/15/2011 14:19 NotEnoughForYou#2
ganz ok, allerdings ist eine Datenbank um vieles Sicherer bei einem Login. Auch die Registrierung wird so erleichtert.
Bei deiner Methode kann man ganz einfach [Only registered and activated users can see links. Click Here To Register...] machen und man hat alles was man braucht ;)
10/15/2011 14:20 .Detores#3
Quote:
Originally Posted by DonCorloene View Post
Moin , Elitepvpers

Heute will ich euch zeigen, wie man in PHP einen ganz einfachen Login Erstellt.
Hoffe es wird euch gefallen & bzw hoffentlich hilft es euch.

~Vorwort~

Schritt 1: Neuer Account

Zuerst möchten wir mit dem Script einen neuen Account anlegen, damit sich der User evt. später von alleine Registieren kann.

Dazu brauchen wir ein ganz normales HTML-Formular mit 3 Feldern.
Einmal ein Feld wo man seinen Benutzernamen (Name: username) eingibt, dann ein Feld wo man sein Passwort eingibt (Name: passwort) und noch ein Feld, wo man sein Passwort bestätigt (Name: passwort2).

Das sieht ca. so aus:

Code:
<form action="eintragen.php" method="post">
Dein Username:<br>
<input type="text" size="24" maxlength="50"
name="username"><br><br>

Dein Passwort:<br>
<input type="password" size="24" maxlength="50"
name="passwort"><br>

Passwort wiederholen:<br>
<input type="password" size="24" maxlength="50"
name="passwort2"><br>

<input type="submit" value="Abschicken">
</form>

Jetzt kommen wir zum intressanten Teil, dem PHP Script. Dieser Script soll den Benutzername und das Passwort nur speichern.

Zuerst fragen wir die eingegebenden Daten ab:


Code:
<?php
$username = $_POST["username"];
$password = $_POST["passwort"];
$password2 = $_POST["passwort2"];
?>

Danach überprüfen wir zuerst, ob überhaupt die beiden Passwörter identisch sind, dafür benutzen wir einfach eine if-Anweisung.

Natürlich wollen wir auch verhindern, das ein Benutzername doppelt vorkommt, sonst gibt es später beim Login Probleme, deswegen erstellen wir ein leeren Array.

Zum schluss verschlüsseln wir noch das Passwort mit der Funktion md5.


Code:
<?php
if ($password == $password2)
   {
   $user_vorhanden = array();
   $passwort = md5($password);
   }
else
   {
   echo "Die Passwörter waren nicht identisch
   <br><a href=\"eintragen.html\">zurück</a>";
   }
?>

Jetzt wollen wir ja nachgucken, ob es den Benutzernamen schon gibt, deswegen öffnen wir die Datei, in der die Benutzernamen und Passwörter gespeichert werden.
Diese Befehle müssen jetzt natürlich auch noch alle in den if Teil.


Code:
<?php
if ($password == $password2)
   {
   $user_vorhanden = array();
   $passwort = md5($password);

   $userdatei = fopen ("user.txt","r");
   while (!feof($userdatei))
      {
      $zeile = fgets($userdatei,500);
      $userdata = explode("|", $zeile);
      array_push ($user_vorhanden,$userdata[0]);
      }
   fclose($userdatei);
   }
?>

Wir öffnen jetzt die Datei, und lesen sie immer Stück für Stück aus. Dabei legen wir nur den Benutzernamen in das Array $user_vorhanden ab.
Wenn in dem Array alle Benutzernamen gespeichert wurden, wird die Datei noch geschlossen.

Jetzt haben wir alle Benutzernamen in dem Array $user_vorhanden, aber jetzt wollen wir gucken, on der Benutzername schon vorhanden ist. Dafür können wir doch ganz einfach in_array benutzen.
Dieser Befehl muss auch wieder in den ersten if-Teil, denn wir wollen die Befehle ja nur ausführen lassen, wenn die Passwörter identisch waren.

Die if-Anweisung sieht jetzt so aus:

Code:
<?php
if ($password == $password2)
   {
   $user_vorhanden = array();
   $passwort = md5($password);

   $userdatei = fopen ("user.txt","r");
   while (!feof($userdatei))
      {
      $zeile = fgets($userdatei,500);
      $userdata = explode("|", $zeile);
      array_push ($user_vorhanden,$userdata[0]);
      }
   fclose($userdatei);

   if (in_array($username,$user_vorhanden))
      {
      echo "Username schon vorhanden <br>
      <a href=\"eintragen.html\">zurück</a>";
      }
   }
?>

Mit in_array schauen wir ob $username, dieser Wert stammt aus dem Formular, schon in dem Array gespeichert wurden, wenn dies nicht der Fall ist, brauchen wir else..
Diese Anweisungen stehen immer noch im ersten if Teil.

Code:
<?php
if ($password == $password2)
   {
   $user_vorhanden = array();
   $passwort = md5($password);

   $userdatei = fopen ("user.txt","r");
   while (!feof($userdatei))
      {
      $zeile = fgets($userdatei,500);
      $userdata = explode("|", $zeile);
      array_push ($user_vorhanden,$userdata[0]);
      }
   fclose($userdatei);

   if (in_array($username,$user_vorhanden))
      {
      echo "Username schon vorhanden <br>
      <a href=\"eintragen.html\">zurück</a>";
      }

   else
      {
      $eintrag ="$username|$passwort";
      $userdatei = fopen ("user.txt","a");
      fwrite($userdatei, "$eintrag\n");
      fclose($userdatei);
      echo "$username, deine Anmeldung war
      erfolgreich<br>
		<a href=\"login.html\">zum Login</a>";
      }
   }
else
   {
   echo "Die Passwörter waren nicht identisch <br>
   <a href=\"eintragen.html\">zurück</a>";
   }
?>
Jetzt speichern wir den Benutzername und das verschlüsselte Passwort in der Text-Datei user.txt. Wenn Ihr diesen Script benutzt, sollte keiner den Namen der Datei wissen, damit man Useraccounts nicht so leicht hacken kann.

Der fertige Script sieht dann so aus (eintragen.php):

Code:
<?php
$username = $_POST["username"];
$password = $_POST["passwort"];
$password2 = $_POST["passwort2"];

if ($password == $password2)
   {
   $user_vorhanden = array();
   $passwort = md5($password);

   $userdatei = fopen ("user.txt","r");
   while (!feof($userdatei))
      {
      $zeile = fgets($userdatei,500);
      $userdata = explode("|", $zeile);
      array_push ($user_vorhanden,$userdata[0]);
      }
   fclose($userdatei);

   if (in_array($username,$user_vorhanden))
      {
      echo "Username schon vorhanden <br>
      <a href=\"eintragen.html\">zurück</a>";
      }

   else
      {
      $eintrag ="$username|$passwort";
      $userdatei = fopen ("user.txt","a");
      fwrite($userdatei, "$eintrag\n");
      fclose($userdatei);
      echo "$username, deine Anmeldung war erfolgreich
      <br><a href=\"login.html\">zum Login</a>";
      }
   }
?>

Schritt 2: Login
Jetzt kommen wir zum Login.
Dafür brauchen wir natürlich wieder ein Formular mit zwei Feldern (Username und Passwort mit den Namen: username und password).
Ca so:

Code:
 <form action="login.php" method="post">
Dein Username:<br>
<input type="text" size="24" maxlength="50"
name="username"><br><br>

Dein Passwort:<br>
<input type="password" size="24" maxlength="50"
name="password"><br>

<input type="submit" value="Login">
</form>

Das Formular ist weiter nicht intressant, aber der PHP Script. Wie immer fragen wir zuerst die beiden Felder ab, und verschlüsseln das Passwort mit der md5-Funktion.
Außerdem geben wir der Variable $log noch den Inhalt 0, warum werdet Ihr später sehen.


Code:
<?php
$username = $_POST["username"];
$passwort = $_POST["password"];
$passwort = md5($passwort);
$log = 0;
?>
Im nächsten Schritt öffnen wir die Datei (user.txt) und lesen diese immer nach und nach.
Dabei trennen wir wieder den Benutzername von dem Passwort, damit wir beides überprüfen können.
Dann schauen wir, ob die Eingaben aus dem Formular mit denen aus der Datei übereinstimmen.
Wenn dies der Fall ist, wird der Variable $log der Inhalt 1 zugeordnet.


Code:
<?php
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
   {
   $zeile = fgets($userdatei,500);
   $userdata = explode("|", $zeile);

   if ($userdata[0]==$username and
   $passwort==trim($userdata[1]))
      {
      echo "Hallo $username";
      $log = 1;
      }
   }
fclose($userdatei);
?>

Aber warum steht da $passwort==trim($userdata[1])?
Ganz einfach, mit trim entfernen wir am Anfang und am Ende des Passwortes überflüssige Zeichen, z.B. Leerzeichen und auch ein Zeilenumbruch.
Wir müssen dies machen, weil die Passwörter immer mit einem Zeilenumbruch am Ende gespeichert werden.
Würden wir dies nicht machen, würde der Script nicht funktionieren, weil ein Wort mit einem Zeilenumbruch am Ende nicht das gleiche Wort ist, als wenn es keinen Zeilenumbruch hat.

Wenn jetzt das Passwort und der Benutzername richtig ist, gelangt der User in den Userbereich (hier: Hallo $username).

Wenn kein Benutzername bzw. Passwort passt, dann hat die Variable $log immer noch den Inhalt 0.

Das können wir wiederrum mit einer if-Anweisung überprüfen.
Code:
<?php
if ($log==0)
   {
   echo "Zugriff verweigert";
   }
?>
Das wars auch schon.

Am Ende sieht die Datei so aus:


Code:
<?php
$username = $_POST["username"];
$passwort = $_POST["password"];
$passwort = md5($passwort);

$log = 0;
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
   {
   $zeile = fgets($userdatei,500);
   $userdata = explode("|", $zeile);

   if ($userdata[0]==$username and
   $passwort==trim($userdata[1]))
      {
      echo "Hallo $username";
      $log = 1;
      }
   }
fclose($userdatei);

if ($log==0)
   {
   echo "Zugriff verweigert";
   }
?>
Noch ein Tipp:
In der Datei, in der die Passwörter gespeichert werden, die sollte immer geheim bleiben.


Thanks Muss nicht sein.

Ein Lob an dich das du es so gut machst und das du dich auch für sowas interesiert bzw. es pub. machst!



Mfg Detores
10/15/2011 14:21 ShapyShape#4
Quote:
Originally Posted by NotEnoughForYou View Post
ganz ok, allerdings ist eine Datenbank um vieles Sicherer bei einem Login. Auch die Registrierung wird so erleichtert.
Bei deiner Methode kann man ganz einfach [Only registered and activated users can see links. Click Here To Register...] machen und man hat alles was man braucht ;)
Ja natürlich gibt es verschiedene Varianten :handsdown: Danke
10/15/2011 14:23 NotEnoughForYou#5
Deine Variante würde ich nicht empfehlen, da sie extrem unsicher ist. Solange es im geschützen Bereich keine wichtigen Sachen gibt, kann man es verwenden
10/15/2011 14:25 ShapyShape#6
Quote:
Originally Posted by NotEnoughForYou View Post
Deine Variante würde ich nicht empfehlen, da sie extrem unsicher ist. Solange es im geschützen Bereich keine wichtigen Sachen gibt, kann man es verwenden
Ja also nicht extrem unsicher aber es gibt natürlich sichere Varianten ;)

Danke für die Feedbacks von dir , wenigstens einer der sich dankbar zeigt bzw sich dafür Intressiert. :handsdown:
10/16/2011 20:03 .Void'#7
Sehr nett, ich denke du solltest es aber mit ner Datenbank umschreiben ;)
10/16/2011 20:45 finaldown97#8
Dann würd ich die txt Datei ausserhalb vom webverzeichnis lassen, denn es gibt da so einen htacces Exploit
10/16/2011 22:08 Reeek#9
1)
PHP Code:
   if ($userdata[0]==$username and
   
$passwort==trim($userdata[1]))
      {
      echo 
"Hallo $username";
      
$log 1;
      }
   } 
Du meinst wohl statt
echo "Hallo $username";
"Hallo" + $username

weiterhin wird das ganze ziemlich den Server beanspruchen, wenn du bei jeder Seite aufs neue die Datenbank beanspruchst - bei 1000 Anfragen pro Sekunde kommt es da schon zu lags ;D
10/17/2011 08:59 boxxiebabee#10
Quote:
Originally Posted by Reeek View Post
1)
PHP Code:
   if ($userdata[0]==$username and
   
$passwort==trim($userdata[1]))
      {
      echo 
"Hallo $username";
      
$log 1;
      }
   } 
Du meinst wohl statt
echo "Hallo $username";
"Hallo" + $username

weiterhin wird das ganze ziemlich den Server beanspruchen, wenn du bei jeder Seite aufs neue die Datenbank beanspruchst - bei 1000 Anfragen pro Sekunde kommt es da schon zu lags ;D
Wohl eher echo "Hallo" . $username; ...
Und wo siehst du hier bitte eine Datenbank? Hier wird nur eine .txt Datei verwendet.
10/17/2011 14:23 Reeek#11
ich weiß dass man per . verbindet... das war kein Code sondern... Deutsch ;D

weiterhin wird das ganze per Textdokument noch deutlich mehr laggen...
10/17/2011 14:54 Che#12
Quote:
Originally Posted by Lizzaran View Post
Wohl eher echo "Hallo" . $username; ...
Und wo siehst du hier bitte eine Datenbank? Hier wird nur eine .txt Datei verwendet.
wat labascht du?
echo "text $variable"; wird genauso behandelt wie echo "text".$variable; und genauso wie echo "text", $variable;
außerdem ist das script nicht xss sicher! nacher wenn ich wieder heimkomm überarbeit ichs mal und editiers rein...

PS: die lösung mit ner textdatei ist so ziemlich die schlechteste überhaupt, sogar xml dokumente werden noch schneller eingelesen/verarbeitet, ne datenbank ist wohl das beste...
10/17/2011 15:47 NotEnoughForYou#13
sein Post war darauf bezogen, dass Reek gesagt hat Hallo + $username
10/17/2011 17:39 Che#14
Quote:
Originally Posted by NotEnoughForYou View Post
sein Post war darauf bezogen, dass Reek gesagt hat Hallo + $username
ups hab ich überlesen, macht aber nix ist trotzdem falsch, dann wurde der fehler halt von nem anderen user begangen, wayne?!?

naja wie auch immer:
  • Die Verwendung von Textdateien ist:
  • extrem lahm
  • extrem unsicher
    Die Verwendung von XML-Dokumenten ist:
  • relativ flott
  • genauso unsicher wie die Verwendung von Textdateien
    Die Verwendung von Datenbanken ist:
  • ziemlich flott
  • ziemlich sicher

Also würde doch jeder vernünftig denkende Mensch zu der Lösung mit Datenbanken tendieren, oder?

Nebenbei: Absolut XSS (Cross Site Scripting) unsicher... htmlspecialchars($variable) tut schon einiges, ist zwar nicht ganz sicher aber es hilft wenigstens bisschen... Wenn dann doch mit Datenbanken gearbeitet wird sollte man auch noch mysql_escape_special_strings($variable) verwenden (man kann beides schachteln ...), damit SQL-Injections auch noch erschwehrt werden...
10/17/2011 23:26 Reeek#15
echo "text $variable"; wird genauso behandelt wie echo "text".$variable;

eben nicht!
nehmen wir an, $var ist "hey".
bei "text $variable" wird "text $variable" ausgegeben, bei "text".$variable "text hey"