• Düzenli ifadeler. Şimdi daha fazla çalışma için ana komut dosyalarını oluşturalım

    Normal ifadeler çok güçlü ama aynı zamanda anlaşılması zor bir dizi işleme aracıdır. Ana noktaları anlatacağım. Düzenli ifade, bir dize kalıbıdır. Bu şablona göre, oluşumları arayabilir, değiştirme yapabilir, şablona uygunluğu kontrol edebilirsiniz.

    Bir şablon (desen) hazırlamak için kurallar

    Model sınırları, genellikle " kullanılarak belirli karakterlerle belirtilmelidir. / ", ama kullanmayı tercih ederim" # " çünkü ileri / geri eğik çizgilerin bolluğu gözlerde yüklenebilir ve "kafesler" genellikle başka hiçbir yerde kullanılmaz. Yani: " #HereRegularExpressionBody#"

    Parantezler normal ifadenin içinde kullanılır - bunlar değiştirilebilen alt ifadelerdir, örneğin:

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

    Bu ifade, bir dizgedeki parametreleri almak için tasarlanmıştır. URL. Satırın başında özel bir karakter var " ^ " - bu, satırın başlangıcı anlamına gelir. Sıradaki gelir " /katalog/" - burada özel karakter yok, sadece satırda olması gereken metin. Sonra parantezlerle karşılaştık, yani ilk alt ifadeye geldik. Köşeli parantezler, satırda olabilecek karakter kümesini gösterir. bu yer. İmzala " - " numaralandırma anlamına gelir. İmzala " \ " özel karakterlerden kaçar. Böylece, ilk alt ifadede Latin alfabesinin BÜYÜK ve küçük harfleri, 0'dan 9'a kadar sayılar, alt çizgi, kısa çizgi ve nokta olabilir. Kısa çizgi ve nokta özel karakterlerdir, ancak burada bunlar kaçar, yani burada sadece karakterler var. Köşeli parantezlerden sonra " işareti gelir. + " - bu, önceki karakterin (ve köşeli parantez içinde verilen bu karakter grubuna sahibiz) 1 veya daha fazla kez gidebileceği anlamına gelir. Ardından " / " sadece bir karakter ve benzer bir ikinci alt ifadedir. Ardından " \.html"metin anlamına gelir" .html". Ve sonra özel karakterler " .* " nokta, herhangi bir karakter anlamına gelir ve yıldız işareti, önceki karakterin herhangi bir sayısı anlamına gelir. Yani, " den sonra .html"Her şey gidebilir.

    Miktarı, niceleyicileri belirtme

    Yukarıda, önceki sembollerin sayısını gösteren bu tür sembolleri zaten ele aldık. + Ve * . Miktarı belirtmek için tüm olasılıklar şunlardır:

    Özel karakterler

    Bazı karakter grupları için özel kısaltmalar vardır:

    "Açgözlülük"

    Düzenli ifade açgözlülüğü kavramını düşünün. Örneğin bir satır var:

    #()#

    Okuma: alt ifade:

    Her şey doğru görünüyor, alt ifade şuna uyuyor:

    Ama şuna da uyuyor:

    alacağız çünkü. normal ifadeler varsayılan olarak "açgözlü"dür. Açgözlülüğü değiştirici ile kaldırabilirsiniz " sen", bunun gibi:

    #()#U

    Değiştiriciler

    Normal ifadeleri değiştiriciler takip edebilir: " #HereRegularExpressionBody#HereModifiers"Değiştirici türleri:

    Ben Büyük/küçük harfe duyarsız modu etkinleştirir, örn. İfadedeki büyük ve küçük harfler farklılık göstermez.
    M Aranmakta olan metnin birden çok satır olarak ele alınması gerektiğini belirtir. Varsayılan olarak, normal ifade altyapısı, gerçekte ne olduğuna bakmaksızın metni tek bir satır olarak ele alır. Buna göre, meta karakterler "^" ve "$" tüm metnin başını ve sonunu gösterir. Bu değiştirici belirtilirse, sırasıyla metnin her satırının başına ve sonuna işaret edeceklerdir.
    S Varsayılan meta karakter " . " tanımında yeni satır karakteri içermez. Bu değiştiricinin belirtilmesi bu sınırlamayı kaldırır.
    sen Düzenli bir ifadenin açgözlülüğünü ortadan kaldırır
    sen Düzenli ifadelerin birlikte çalışmasını sağlar Kirilden UTF-8'e aksi takdirde düzgün çalışmaz.

    düzenli ifadelerle çalışmak için php işlevleri

    preg_replace

    Ara ve Değiştir:

    preg_replace (karışık $model , karışık $değiştirme , karışık $konu [, int $limit = -1 [, int &$count ]]);

    Her değer bir dize veya bir dizi olabilir. $konu dizi - bir dizi döndürülür, aksi takdirde bir dize

    preg_split

    Bir dizeyi normal ifadeye göre böler:

    preg_split(string $model , string $konu [, int $limit = -1 [, int $flags = 0 ]]);

    Verilen dizenin alt dizelerinden oluşan bir dizi döndürür ders, desenle eşleşen sınırlar boyunca bölünür model.

    Geri izlemeler (0)

    Tarihinde güncellendi: 2018-03-12

    Yayınlanan: 2016-12-21

    Zaman içinde PHP, güvenli uygulamaların geliştirilmesini destekleyen özelliklerin yanı sıra, güvenli olmayan kod yazmayı kolaylaştıran kullanımdan kaldırılmış veya kaldırılmış özellikler eklemiştir.

    PHP güvenlik odaklı özelliklerinden yararlanan ve AJAX istekleri göndermek için jQuery'i ve diğer çerçeveleri kullansanız da kullansanız da çalışabilen hızlı ve güzel bir kullanıcı arabirimi sağlamak için Bootstrap'i kullanan modern bir oturum açma ve kayıt sisteminin nasıl oluşturulacağını öğrenmek için bu öğreticiyi okuyun. Olumsuz.



    Sorularınız veya yorumlarınız varsa, bu makaleye veya makalesine yorum olarak mesaj gönderebilirsiniz.

    Değişiklik Günlüğü

    2017-03-27: Besteci aracı kullanılarak daha fazla indirme ve yükleme bilgisi eklendi.

    2017-01-01: Makale, bunların 2017'de güvenli uygulamalar olmaya devam ettiğini yansıtacak şekilde güncellendi




    Yorum yapabilmek için kayıtlı kullanıcı olmanız veya giriş yapmanız gerekmektedir.

    Hesabınızla hemen giriş yapın:

    Merhaba! Şimdi PHP + MySQL kullanarak sitedeki en basit kaydı uygulamaya çalışacağız. Bunun için bilgisayarınızda Apache kurulu olmalıdır. Komut dosyamızın nasıl çalıştığı aşağıda gösterilmiştir.

    1. Veritabanında users tablosunu oluşturarak başlayalım.. Kullanıcı verilerini (giriş ve şifre) içerecektir. Gelelim phpmyadmin'e (eğer PC'nizde bir veritabanı oluşturuyorsanız) http://localhost/phpmyadmin/). tablo oluştur kullanıcılar, 3 alanı olacaktır.

    Ben mysql veritabanında oluşturuyorum, siz başka bir veritabanında oluşturabilirsiniz. Ardından, değerleri şekildeki gibi ayarlayın:

    2. Bu tabloya bir bağlantı gereklidir. Bir dosya oluşturalım bd.php. Bu içerik:

    $db = mysql_connect("MySQL sunucunuz","bu sunucuya giriş yapın","bu sunucunun şifresi");
    mysql_select_db ("bağlanılacak veritabanının adı", $db);
    ?>

    Benim durumumda şöyle görünüyor:

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

    Kurtarırız bd.php.
    Harika! Veritabanında bir tablomuz var, onunla bir bağlantımız var. Artık kullanıcıların verilerini bırakacakları bir sayfa oluşturmaya başlayabilirsiniz.

    3. İçeriğe sahip bir reg.php dosyası oluşturun (tüm yorumlar içeride):



    Kayıt


    Kayıt
















    4. Bir dosya oluşturun, veri tabanına veri girecek ve kullanıcıyı kaydedecektir. save_user.php(yorumlar içeriden):



    {
    }
    //kullanıcı adı ve şifre girilirse, etiketlerin ve komut dosyalarının çalışmaması için bunları işleriz, insanların ne girebileceğini asla bilemezsiniz


    // fazladan boşlukları kaldır
    $giriş = kırp($giriş);
    $şifre = trim($şifre);
    // veritabanına bağlan
    // aynı girişe sahip bir kullanıcının varlığını kontrol edin
    $result = mysql_query("Giriş yaptığınız kullanıcılardan kimlik SEÇİN="$login"",$db);
    if (!empty($myrow["id"])) (
    exit("Üzgünüz, girdiğiniz kullanıcı adı zaten kayıtlı. Lütfen başka bir kullanıcı adı giriniz.");
    }
    // eğer yoksa, verileri kaydedin
    $result2 = mysql_query ("INSERT INTO users (login,password) VALUES("$login","$password")");
    // Hata olup olmadığını kontrol edin
    eğer ($result2=="DOĞRU")
    {
    echo "Başarılı bir şekilde kayıt oldunuz! Artık siteye girebilirsiniz.
    Ana Sayfa";
    }
    başka(
    echo "Hata! Giriş yapmadınız.";
    }
    ?>

    5. Artık kullanıcılarımız kayıt olabilir! Ardından, önceden kayıtlı kullanıcılar için siteye girmek için bir "kapı" yapmanız gerekir. index.php(yorumlar içeriden):

    // tüm prosedür oturumlarda çalışır. Sitedeyken kullanıcının verilerinin saklandığı yer burasıdır. Onları sayfanın en başında başlatmak çok önemlidir!!!
    session_start();
    ?>


    Ana Sayfa


    Ana Sayfa











    Kayıt olmak



    // Oturum açma ve kullanıcı kimliği değişkenlerinin boş olup olmadığını kontrol edin
    if (boş($_SESSION["giriş"]) veya boş($_SESSION["id"]))
    {
    // Boşsa, bağlantıyı göstermeyiz
    yankı "Misafir olarak giriş yaptınız
    Bu bağlantı yalnızca kayıtlı kullanıcılar tarafından kullanılabilir";
    }
    başka
    {

    Dosyada index.php sadece kayıtlı kullanıcılara açık olacak bir bağlantı göstereceğiz. Komut dosyasının tüm amacı budur - herhangi bir veriye erişimi kısıtlamak.

    6. Girilen kullanıcı adı ve şifrenin doğrulandığı bir dosya var. testreg.php (yorumlar içeride):

    session_start();// tüm prosedür oturumlarda çalışır. Sitedeyken kullanıcının verilerinin saklandığı yer burasıdır. Onları sayfanın en başında başlatmak çok önemlidir!!!
    if (isset($_POST["login"])) ( $login = $_POST["login"]; if ($login == "") ( unset($login);) ) //girilen girişi gir kullanıcıyı $login değişkenine girin, eğer boşsa, o zaman değişkeni yok ederiz
    if (isset($_POST["şifre"])) ( $şifre=$_POST["şifre"]; if ($şifre =="") ( unset($şifre);) )
    // $password değişkenine kullanıcı tarafından girilen şifreyi girin, boşsa değişkeni yok edin
    if (empty($login) veya empty($password)) //eğer kullanıcı bir kullanıcı adı veya şifre girmediyse, bir hata verir ve betiği durdururuz
    {
    exit("Bütün bilgileri girmediniz, geri dönün ve tüm alanları doldurun!");
    }
    //kullanıcı adı ve şifre girilirse, etiketlerin ve komut dosyalarının çalışmaması için bunları işleriz, insanların ne girebileceğini asla bilemezsiniz
    $login = stripslashes($login);
    $login = htmlspecialchars($login);
    $şifre = stripslashes($şifre);
    $şifre = htmlözelkarakterler($şifre);
    // fazladan boşlukları kaldır
    $giriş = kırp($giriş);
    $şifre = trim($şifre);
    // veritabanına bağlan
    include("bd.php");// bd.php dosyası diğer herkesle aynı klasörde olmalıdır, değilse o zaman sadece yolu değiştirin

    $result = mysql_query("Giriş yaptığınız kullanıcılardan * SEÇİN="$login"",$db); //veri tabanından girilen oturum açma ile kullanıcı hakkındaki tüm verileri al
    $myrow = mysql_fetch_array($sonuç);
    if (boş($myrow["şifre"]))
    {
    //girilen girişe sahip kullanıcı mevcut değilse
    }
    başka(
    //varsa şifreleri kontrol et
    if ($myrow["şifre"]==$şifre) (
    //şifreler eşleşirse kullanıcı için oturumu başlatırız! Onu tebrik edebilirsiniz, girdi!
    $_SESSION["giriş"]=$myrow["giriş"];
    $_SESSION["id"]=$myrow["id"];//bu veriler çok sık kullanılır, dolayısıyla oturum açan kullanıcı bunları "taşır"
    echo "Başarıyla giriş yaptınız! Ana Sayfa";
    }
    başka(
    //şifreler uyuşmuyorsa

    Exit("Üzgünüz, girdiğiniz kullanıcı adı veya şifre hatalı.");
    }
    }
    ?>

    Tamam, şimdi her şey bitti! Belki ders sıkıcı ama çok faydalı. Burada yalnızca kayıt fikri gösteriliyor, o zaman onu iyileştirebilirsiniz: koruma, tasarım, veri alanları ekleyin, avatar yükleyin, hesabınızdan çıkış yapın (bunun için, işlevle oturumdaki değişkenleri yok etmeniz yeterlidir. çöz) ve benzeri. İyi şanlar!

    Her şeyi kontrol ettim, iyi çalışıyor!