Autor Zpráva
Stalker
Profil
Ahoj,

mám skriptík pro ověření emailové adresy ve formulářovém prvku, nicméně výsledek mi to háže už při načtení stránky. Jak docílím toho, aby byl výsledek načten až po odeslání formuláře?

Živá ukázka: http://mcernak.cz/test/script.php

Scriptík, kde mi to zatím vypisuje zprávu echem, ale časem to bude ukládat mail do databáze:
<?php
$mail = isset($_POST["sberna-email"]) ? $_POST["sberna-email"] : '';

function is_email($mail)
{
    if (preg_match("/^[\w-\.]+@([\w-]+\\.)+[a-zA-Z]{2,4}$/", $mail))
        return true;
    else
        return false;
}

if (is_email($mail))
{
  echo "OK";
}
else
{
  echo "Není to ok";
}
?>
tiso
Profil
Robí sa to takto:
<?php
if (isset($_POST["sberna-email"])) {//ak mame policko z formulara, tak ho otestuj
  if (is_email($_POST["sberna-email"])) {
    echo "OK";
  } else {
    echo "Není to ok";
  }
}

function is_email($mail)
{
    if (preg_match("/^[\w-\.]+@([\w-]+\\.)+[a-zA-Z]{2,4}$/", $mail))
        return true;
    else
        return false;
}
Stalker
Profil
tiso:
Ahá, kua vždy už to skoro celý udělám, ale chybí mi ten poslední krůček. Chce to víc logiky a zkušeností, koukám, že to je furt o tom samým. Díky moc


Ještě jedna věc. Výstup z formuláře, si vložím do proměnné, pak můj skriptík funguje dobře a vypadá takto:

$zapisEmailu = $_POST["sberna-email"];

function is_email($mail)
{
    if (preg_match("/^[\w-\.]+@([\w-]+\\.)+[a-zA-Z]{2,4}$/", $mail))
        return true;
    else
        return false;
}

if (isset($zapisEmailu)) {//ak mame policko z formulara, tak ho otestuj
  if (is_email($zapisEmailu)) {
    echo "OK";
  } else {
    echo "Není to ok";
  }
}

1. Musí být proměnná zapisEmailu "ošetřena" issetem, když se naplní až po kliknutí na Odeslat?

2. Kdy musím formulářový prvek ošetřit proti hacknutí pomocí htmlspecialchars? Až, když bych chtěl údaje vypisovat někam na web, nebo už ve chvíli, kdy s údaji z formuláře pracuji?
Kubo2
Profil
Stalker:
1. Prelož si: is set : je nastavený/(á)?
Z toho ti musí logicky vyplynúť, že funkcia isSet() testuje, či bola premenná nastavená (teda či existuje v aktuálnom kontexte <obore platnosti> skriptu), nie či bola inicializovaná alebo či má hodnotu. Na to druhé je tu empty().

2. Opäť si to prelož: html special chars (characters) : špeciálne html znaky.
To znamená, že ak dáta nevypíšeš do html súboru, neuškodia ti.
jenikkozak
Profil
Než nějaký (pochybný) překlad názvů bude lépe si ve zvýrazněných skriptech kliknout na patřičné klíčové slovo. Odkazy vedou na manuál.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: