• Regulární výrazy. Nyní vytvoříme hlavní skripty pro další práci

    Regulární výrazy jsou velmi výkonným, ale zároveň těžko pochopitelným nástrojem pro zpracování řetězců. Popíšu hlavní body. Regulární výraz je vzor řetězce. Podle této šablony můžete vyhledávat výskyty, provádět náhradu, kontrolovat shodu se šablonou.

    Pravidla pro vytvoření šablony (vzoru)

    Hranice vzoru musí být označeny určitými znaky, často pomocí " / ", ale raději používám" # " protože množství předních / zadních lomítek se může nabíjet v očích a "mříže" se obvykle nikde jinde nepoužívají. Takže: " #HereRegularExpressionBody#"

    Uvnitř regulárního výrazu se používají závorky – jedná se o podvýrazy, se kterými lze manipulovat, například:

    #^/catalog/(+)/(+)\.html.*#

    Tento výraz je určen k příjmu parametrů v řetězci URL. Na začátku řádku je speciální znak " ^ " - to znamená začátek řádku. Následuje " /katalog/" - zde nejsou žádné speciální znaky, je to pouze text, který by měl být obsažen v řádku. Pak jsme se setkali se závorkami, to znamená, že jsme se dostali k prvnímu podvýrazu. Hranaté závorky označují množinu znaků, které mohou být v řádku na toto místo. Podepište se - " znamená výčet. Znamení " \ " uniká speciálním znakům. V prvním podvýrazu tedy můžeme mít VELKÁ a malá písmena latinské abecedy, čísla od 0 do 9, podtržítko, pomlčku a tečku. Pomlčka a tečka jsou speciální znaky, ale zde jsou uvozeny, takže zde jsou pouze znaky. Za hranatými závorkami následuje znak " + " - to znamená, že předchozí znak (a tuto sadu znaků máme uvedenou v hranatých závorkách) může jít jednou nebo vícekrát. Pak přijde " / "je jen znak a podobný druhý podvýraz. Pak přijde" \.html"což znamená text" .html". A pak speciální znaky" .* " tečka znamená libovolný znak a hvězdička libovolné číslo předchozího znaku. To znamená za " .html„Všechno může jít.

    Specifikace množství, kvantifikátory

    Výše jsme již uvažovali takové symboly udávající počet předchozích symbolů, jako např + A * . Zde jsou všechny možnosti pro určení množství:

    Speciální znaky

    Pro některé skupiny znaků existují speciální zkratky:

    "Chamtivost"

    Zvažte koncept chamtivosti regulárního výrazu. Existuje například řádek:

    #()#

    Čtení: podvýraz:

    Vše se zdá být v pořádku, podvýraz zapadá pod:

    Ale také se hodí:

    Dostaneme to, protože. regulární výrazy jsou ve výchozím nastavení "chamtivé". Chamtivost můžete odstranit modifikátorem " U", takhle:

    #() #U

    Modifikátory

    Za regulárními výrazy mohou následovat modifikátory: " #HereRegularExpressionBody#HereModifiers"Typy modifikátorů:

    i Povolí režim bez rozlišení velkých a malých písmen, tj. velká a malá písmena ve výrazu se neliší.
    m Označuje, že hledaný text by měl být považován za více řádků. Ve výchozím nastavení modul regulárních výrazů považuje text za jeden řádek bez ohledu na to, co ve skutečnosti je. Podle toho metaznaky "^" a "$" označte začátek a konec celého textu. Pokud je tento modifikátor zadán, budou ukazovat na začátek a konec každého řádku textu.
    s Výchozí metaznak je " . " nezahrnuje ve své definici znak nového řádku. Zadáním tohoto modifikátoru toto omezení odstraníte.
    U Odstraňuje chamtivost regulárního výrazu
    u Umožňuje práci s regulárními výrazy Cyrilice na UTF-8 jinak to nefunguje správně.

    php funkce pro práci s regulárními výrazy

    preg_replace

    Hledat a nahradit:

    preg_replace (smíšený $vzor , smíšený $náhrada , smíšený $předmět [, int $limit = -1 [, int &$počet ]]);

    Každá hodnota může být řetězec nebo pole, v případě $předmět pole - je vráceno pole, jinak řetězec

    preg_split

    Rozdělí řetězec regulárním výrazem:

    preg_split(řetězec $vzor , řetězec $předmět [, int $limit = -1 [, int $příznaky = 0 ]]);

    Vrátí pole skládající se z podřetězců daného řetězce předmět, který je rozdělen podél hranic, které odpovídají vzoru vzor.

    Zpětné odkazy (0)

    Aktualizováno dne: 2018-03-12

    Vloženo na: 2016-12-21

    Postupem času PHP přidává funkce, které podporují vývoj bezpečných aplikací, stejně jako zastaralé nebo odstraňované funkce, které usnadňovaly psaní nezabezpečeného kódu.

    Přečtěte si tento tutoriál a zjistěte, jak vytvořit moderní přihlašovací a registrační systém, který využívá funkce PHP zaměřené na zabezpečení a používá jQuery k odesílání požadavků AJAX a Bootstrap k poskytování rychlého a pěkného uživatelského rozhraní, které může fungovat bez ohledu na to, zda používáte jiné frameworky nebo ne.



    Pokud máte dotazy nebo připomínky, můžete napsat zprávu jako komentář k tomuto článku nebo v jeho .

    Protokol změn

    2017-03-27: Přidány další informace o stahování a instalaci pomocí nástroje pro skládání.

    2017-01-01: Aktualizován článek, aby odrážel, že se jedná o bezpečné postupy i v roce 2017




    Chcete-li přidat komentář, musíte být registrovaným uživatelem nebo přihlášením

    Přihlaste se ihned se svým účtem na:

    Ahoj! Nyní se pokusíme implementovat nejjednodušší registraci na webu pomocí PHP + MySQL. Chcete-li to provést, musí být na vašem počítači nainstalován Apache. Jak náš skript funguje, je uvedeno níže.

    1. Začněme vytvořením tabulky uživatelů v databázi. Bude obsahovat uživatelská data (login a heslo). Pojďme na phpmyadmin (pokud si na svém PC vytvoříte databázi http://localhost/phpmyadmin/). Vytvořte tabulku uživatelů, bude mít 3 pole.

    Vytvořím to v databázi mysql, můžete si to vytvořit v jiné databázi. Dále nastavte hodnoty jako na obrázku:

    2. Je vyžadováno připojení k této tabulce. Vytvoříme soubor bd.php. Jeho obsah:

    $db = mysql_connect("váš server MySQL","přihlášení k tomuto serveru","heslo k tomuto serveru");
    mysql_select_db ("název databáze, ke které se má připojit", $db);
    ?>

    V mém případě to vypadá takto:

    $db = mysql_connect("localhost","user","1234");
    mysql_select_db("mysql",$db);
    ?>

    šetříme bd.php.
    Skvělý! V databázi máme tabulku, připojení k ní. Nyní můžete začít vytvářet stránku, kde uživatelé zanechají svá data.

    3. Vytvořte soubor reg.php s obsahem (všechny komentáře uvnitř):



    Registrace


    Registrace
















    4. Vytvořte soubor, který zadá data do databáze a uloží uživatele. save_user.php(komentáře uvnitř):



    {
    }
    //pokud je zadáno přihlašovací jméno a heslo, zpracujeme je tak, aby značky a skripty nefungovaly, nikdy nevíte, co mohou lidé zadat


    // odstranění nadbytečných mezer
    $login = trim($login);
    $heslo = trim($heslo);
    // připojení k databázi
    // kontrola existence uživatele se stejným přihlášením
    $result = mysql_query("SELECT id FROM users WHERE login="$login"",$db);
    if (!empty($myrow["id"])) (
    exit("Omlouváme se, zadané uživatelské jméno je již zaregistrováno. Zadejte prosím jiné uživatelské jméno.");
    }
    // pokud žádná není, uložte data
    $result2 = mysql_query ("INSERT INTO users (login,password) VALUES("$login","$password")");
    // Zkontrolujte, zda nejsou chyby
    if ($result2=="TRUE")
    {
    echo "Úspěšně jste se zaregistrovali! Nyní můžete vstoupit na stránku.
    Hlavní strana";
    }
    jiný(
    echo "Chyba! Nejste přihlášeni.";
    }
    ?>

    5. Nyní se naši uživatelé mohou registrovat! Dále je třeba vytvořit „dveře“ pro vstup na stránky pro již registrované uživatele. index.php(komentáře uvnitř):

    // celý postup funguje na relacích. Právě v něm jsou uložena data uživatele, když je na webu. Je velmi důležité je spustit hned na začátku stránky!!!
    session_start();
    ?>


    Hlavní strana


    Hlavní strana











    Registrovat



    // Zkontrolujte, zda jsou proměnné login a user id prázdné
    if (prázdné($_SESSION["login"]) nebo prázdné($_SESSION["id"]))
    {
    // Pokud je prázdné, odkaz nezobrazíme
    echo "Jste přihlášeni jako host
    Tento odkaz je dostupný pouze registrovaným uživatelům";
    }
    jiný
    {

    V souboru index.php zobrazíme odkaz, který bude otevřen pouze registrovaným uživatelům. To je celý smysl skriptu – omezit přístup k jakýmkoli datům.

    6. Existuje soubor s ověřením zadaného přihlašovacího jména a hesla. testreg.php (komentáře uvnitř):

    session_start();// celá procedura funguje na relacích. Právě v něm jsou uložena data uživatele, když je na webu. Je velmi důležité je spustit hned na začátku stránky!!!
    if (isset($_POST["login"])) ( $login = $_POST["login"]; if ($login == "") ( unset($login);) ) //zadejte přihlašovací jméno zadané uživatelem uživatele do proměnné $login, pokud je prázdná, pak proměnnou zničíme
    if (isset($_POST["heslo"])) ( $password=$_POST["heslo"]; if ($password =="") ( unset($password);) )
    //do proměnné $password vložte heslo zadané uživatelem, pokud je prázdné, zničte proměnnou
    if (empty($login) nebo empty($password)) //pokud uživatel nezadal přihlašovací jméno nebo heslo, vypíšeme chybu a zastavíme skript
    {
    exit("Nezadali jste všechny informace, vraťte se a vyplňte všechna pole!");
    }
    //pokud je zadáno přihlašovací jméno a heslo, zpracujeme je tak, aby značky a skripty nefungovaly, nikdy nevíte, co mohou lidé zadat
    $login = stripslashes($login);
    $login = htmlspecialchars($login);
    $heslo = stripslashes($heslo);
    $heslo = htmlspecialchars($heslo);
    // odstranění nadbytečných mezer
    $login = trim($login);
    $heslo = trim($heslo);
    // připojení k databázi
    include("bd.php");// soubor bd.php by měl být ve stejné složce jako všichni ostatní, pokud tomu tak není, stačí změnit cestu

    $result = mysql_query("SELECT * FROM users WHERE login="$login"",$db); //načtení všech údajů o uživateli se zadaným loginem z databáze
    $myrow = mysql_fetch_array($vysledek);
    if (empty($myrow["heslo"]))
    {
    //pokud uživatel se zadaným loginem neexistuje
    }
    jiný(
    //pokud existuje, zkontrolujte hesla
    if ($myrow["password"]==$password) (
    //pokud se hesla shodují, zahájíme relaci pro uživatele! Můžete mu gratulovat, vstoupil!
    $_SESSION["login"]=$myrow["login"];
    $_SESSION["id"]=$myrow["id"];//tato data jsou velmi často používána, takže přihlášený uživatel je "nosí"
    echo "Úspěšně jste se přihlásili! Hlavní strana";
    }
    jiný(
    //pokud se hesla neshodují

    Exit("Omlouváme se, zadané přihlašovací jméno nebo heslo je nesprávné.");
    }
    }
    ?>

    Dobře, teď je po všem! Možná je lekce nudná, ale velmi užitečná. Zde je zobrazena pouze myšlenka registrace, poté ji můžete vylepšit: přidat ochranu, design, datová pole, nahrát avatary, odhlásit se ze svého účtu (k tomu jednoduše zničte proměnné z relace pomocí funkce odstaveno) a tak dále. Hodně štěstí!

    Vše zkontrolováno, funguje dobře!