Sonra, nasıl oluşur, bir gönderme, bir metin girişi bir değer tutabilir?

7 Cevap php

Ben bir kullanıcı adı ve soyadı yazıyor emin olmak için bir form doğrulamak istiyor.

Bir kullanıcı sadece kendi soyadı yazıyor, form soyadı alanının yanındaki bir hata mesajı ile tekrar göstermek gerekir, ancak ad değeri still olmalıdır.

Hehe, bu nasıl bilmiyorum. Ben sadece bir acemi PHP programcısı değilim.

İşte ben bugüne kadar ne var:

<html>
<head>
</head>

<body>
    <form action="formprueba.php" method="get">
        <dl>
            <dt>Last Name:</dt>
            <dd><input type="text" value="" name="name" />
                <?php if((isset($_GET['name'])) && ($_GET['name'] == "")){
                    echo "Please write a correct name.";
                }
                ?>
            </dd>                

            <dt>Last Name:</dt>
            <dd><input type="text" value="" name="lastname" />
                <?php if((isset($_GET['lastname'])) && ($_GET['lastname'] == "")){
                    echo "Please write a correct last name.";
                }
                ?>
            </dd>

            <br />                
            <dt>
                <input type="submit" value="enviar" />
            </dt>
            <input type="hidden" name="enviado" value="j"/>
        </dl>
    </form>
</body>

Ayrıca, ben bir kaç dakika varsa birisi (üçüncü parti eklentileri kullanmadan) doğrulamak için bana bir daha verimli bir yol gösterebilir, ben gerçekten grad olurdum, bu doğrulama korkunç eminim.

Teşekkürler SO.

7 Cevap

Bu gibi giriş etiketi "değer" alanına ihtiyaç değişkeni yerleştirin:

<input type="text" value="<?php echo htmlspecialchars($_GET['lastname']); ?>" name="lastname" />

VE bu HTML karakterleri birisi (htmlspecialchars'dan tarafından) koymak olabilir en azından alıntı önemlidir.

If a user writes in only his last name, the form should show again with an error message beside the last name field, but the name value should still be there.

Sadece $_GET (Form yöntemi kullanıyorsunuz) kendi değerini almak

<input type="text" value="" name="lastname" value="<?php echo $_GET['lastname'];?>" />

ve böylece ....

Sen must aynı zamanda güvenlik nedenleriyle htmlspecialchars işlevini kullanın.

More Information Here.

Eğer böyle bir şey yapıyorsanız

<input type="text" value="" name="lastname" value="<?php echo $_GET['lastname'];?>" />

never never ever forget to check/escape the value you display using e.g. htmlentities(). Otherwise you are open to completely trivial javascript injection attacks!

i zor yoldan öğrenmek zorunda sadece küçük bir not: bir hata mesajı görüntüleniyor ve arka-düğmesine basarak (veya aynı kullanarak javascript yapıyor) kullanıcıyı çağıran not genel giriş alanlarına değerleri korumak gelmez.

Bu tamamen tarayıcı özgü, örneğin gibi görünüyor Benim için Firefox değil Safari üzerinde çalıştı, ancak ...

Sunucu tarafında doğrulamaları yapmak için onun iyi. Sizin yaklaşım doğru gibi görünüyor. Sadece başarılı oldu sayfasında hava veya doğrulama sonunda size bir bayrak koruyabilirsiniz.

Örnek

$ Bayrak = Ture;

<?php if((isset($_GET['lastname'])) && ($_GET['lastname'] == "")){
       echo "Please write a correct last name.";
       $flag="false";
}
?>

then at the bottom of the page if($flag==true) echo "form submit";

Kişinin değerinin biri yaklaşık sebat doğru giriş etiketi katma değer söz etti

value="<?php echo $_GET['lastname'];?>"

Umarım bu yardımcı olur.

Sen istemci tarafı javascript kullanmak olabilir - sunucuya bir yolculuk bu şekilde kaydedebilirsiniz.

Olsa Dezavantajı: kullanıcı güvenilir olamaz gibi gerçekten sadece (tabii güvenlik önlemleri için) temel denetimi yapabilirsiniz. Sunucuya pahalı bir gezi yapmadan önce en azından "bayrak" geçersiz desenleri yapabilirsiniz.

Bence, JavaScript sen Javascript güvenebilirsiniz eğer iyi cevaptır. Ama müşteri tarafı komut fazla basmış olabilir. Yani daha sonra sunucuda girişi doğrulamak.