PHP Regular Expressions

chris1607

Cadet 2nd Year
Registriert
Sep. 2011
Beiträge
16
Hallo,

hab mal ne Frage und hoffe ihr könnt dies beantworten!
Ich sag auch schon danke im Vorraus

Ich habe heute den Code geschriben:

<?php error_reporting (E_ALL ^ E_NOTICE);

$IP=$_POST['IP'];

echo "<html>";


echo "IP-Adresse :";
echo "<td><input type='text' name='IP' size='20' value='$IP'/></td>";
echo "<td><input type='submit' name='speichern' value='Speichern' ></td>";

$IP = "192.168.0.1";
if (preg_match(
'/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/',
$IP))
{
echo "IP address is good.";
}

echo "</html>";
?>

und will dass wenn man den Button drückt dass erst dann dieses Reg Ex ausgeführt wird, weil wenn ich jetzt das php file öffne sofort da steht "IP address is good." obwolh ich nichts gemacht habe.. ?

Danke schon mal im Vorraus
 
Wieso solltest du nichts gemacht haben? Du hast $IP direkt vor dem preg_match auf 192.168.0.1 gesetzt... IMMER
 
1. Nutz die php-Code Sektion hier im Forum!
2. Formulare gehören nicht in Tabellen!
3. Einfach ne If-Abfrage ob man auf speichern gedrückt hat
3.1. Funktioniert nur, wenn im Formular die selbe Seite als ref angegeben ist

PHP:
<?php
error_reporting (E_ALL ^ E_NOTICE);

$IP=$_POST['IP'];

echo "<html>";


echo "IP-Adresse :";
echo "<input type='text' name='IP' size='20' value='$IP'/>";
echo "<input type='submit' name='speichern' value='Speichern' >";

// Testen ob man auf Speichern gedrückt hat
if (isset($_REQUEST['speichern'])) { // Weiß ja nicht ob _GET oder _POST
    if (preg_match('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/', $IP)) {
        echo "IP address is good.";
    }
}

echo "</html>";
?>
 
Zuletzt bearbeitet:
Hallo,
danke für die schnelle antwort.

Es funktioniert jetzt dass es nicht gleich kommt mit "IP address is good"!
aber jetzt wenn ich dieses file mit dem IE öffne in die Textbox eine IP schreibe und dann auf speichern drück passiert nix, eigentlich sollte er ja dann schauen ob diese stimmp oder nicht.

PHP:
<?php 
error_reporting (E_ALL ^ E_NOTICE);
 
$IP=$_POST['IP'];
 
echo "<html>";
 
 
echo "IP-Adresse :";
echo "<input type='text' name='IP' size='20' value='$IP'/>";
echo "<input type='submit' name='speichern' value='Speichern' >";
 

if (isset($_REQUEST['speichern'])) {
    $IP = "192.168.0.1";
}
 
 
if (preg_match('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/', $IP)) {
    echo "IP address is good.";
}
 
echo "</html>";
?>
 
Ich hab irgendwie das Gefühl, dass da einige HTML-Tags fehlen und das man sich so nicht wundern sollte, wenn dann Browser streiken ;-)
 
Ja, ein <form>-Tag zum Beispiel... so weiß der ja gar nicht, was der submit-Knopf bewirken soll ;) Vom fehlenden <body> mal ganz abgesehen...

Außerdem glaube ich nicht, dass das hier sinnvoll ist:
PHP:
if (isset($_REQUEST['speichern'])) {
    $IP = "192.168.0.1";
}
 
Crys schrieb:
3.1. Funktioniert nur, wenn im Formular die selbe Seite als ref angegeben ist
Das zumindest ist so nicht korrekt. Wenn keine Action angegeben ist, wird die aktuelle URL als Action verwendet.

Insgesamt seh ich hier aber auch schwarz. Man sollte schon HTML verstehen, bevor man PHP zusammen stümpert.
 
Daaron schrieb:
Das zumindest ist so nicht korrekt. Wenn keine Action angegeben ist, wird die aktuelle URL als Action verwendet.
Natürlich ist das korrekt, wenn nichts dran steht wird die selbe Adresse neu aufgebaut, klar. Wenn man auf eine andere Adresse verweist, dann geht das nicht. Mehr wollte ich damit nicht aussagen.

Ich habe aber schon angenommen, dass chris1607 nur html-Teile weggelassen hat. Deshalb ja auch meine Unsicherheit, ob er _GET oder _POST verwendet ...
So geht das natürlich nicht.
 
Zurück
Oben