mevcut veri ile bir metin alanı / alanı doldurmamak

5 Cevap php

Ben kullanıcı bilgilerini düzenlemek için bir sayfa var ve ben güncel bilgi göstermek ve mevcut bilgileri üzerine yazılmasını önlemek için, düzenleme için izin istiyoruz.

Şu anda, ben veri getiriliyor yaşıyorum ve bu yüzden gibi bir metin alanında görüntüleme:

$usernameQuery = "select username, firstname from USERS where username = '" . $con->escape_string($username) . "'";     

$xblah = $con->query($usernameQuery);
  while ($row = mysqli_fetch_assoc($xblah))
  {
    $checkUsername = $row['username'];
    $checkFirstName = $row['firstname'];
   }


echo "<form name=\"userForm\">
<h1>Editing information for: ".$username."</h1>
<p>
First name:
<textarea rows=\"1\" id=\"firstname\">".$checkFirstName."</textarea>
<br />
</form>"

Bu metin alanı nedeniyle bug biri belirtildiğinde iki satır görüntüleme için, firefox doğru göstermez. Input type = metin ile aynı şeyi yapmak için herhangi bir yolu var mı?

Aynı zamanda, şu anda, veritabanında firstname içeriklerinin zaman testrecord için john olmakla var_dump ($ checkFirstName) sadece s gösterir. Ne alanın gerçek içeriğini almak için ne yapmalısınız?

5 Cevap

Input type = metin ile aynı şeyi yapmak için herhangi bir yolu var mı?

<input type="text" name="firstname" value="<?= $checkFirstName ?>" />

Diğer soruna gelince, 's' bir ilk ada sahip başka bir kullanıcı, aynı zamanda 'john' ilk adı ile kullanıcı aynı kullanıcı adı vardır? Bunu söylüyorum nedeni sizin veri getirmek için while döngü kullanmak, birden çok sonuç varsa, size sorgu eşleşen son satırın sol olacak olmasıdır.

Bu sorunu gidermek için olası yolları (Eğer veri / işlem birden çok satır getirme istediğiniz anlamına gelir) bir while döngü kullanarak ve tüm kullanıcı adlarının benzersiz emin değil bulunmaktadır.

Dan getirilen değeri 'firstname' veritabanında ne eşleşmiyor neden bunun dışında, ben görmüyorum.

Eğer giriş türünü kullanırsanız = metin girişi, size değer özniteliği koymak bir şey varsayılan olarak gösterilir.

echo '<input type="text" value="' . $checkFirstName . '">';

Tabii ki, sadece durumda, bu alana içine çıktısını almadan emin $ checkFirstName bazı sanitasyon ne yapmak isteyeceksiniz.

Senin alanın değerlerini getting süre önce döngü var_dumping $ satır çalışıyor, ve bu yanlış ne olup bittiğini anlamaya görmek için gibi. Yararlı bir şey görünmüyor, belki bir güzel ile döngü içindeyken var_dump < her tekrarında arasında hr>? Bu, sorgudan bütünüyle iade ediliyor tam olarak ne tam bir görünüm vermelidir. Var_dump sizin için biraz fazla bilgi Ayrıca, eğer check out:

print_r($var)

print_r documentation

Giriş etiketinin 'değer' niteliğini kullanın.

First name: <input type=\"text\" name=\"name\" value=\"$checkFirstName\"/><br />

textareas linebreaks ile satırlı metin görüntülemek içindir. Kullanıcı ve ilk isimler genellikle bu, böylece daha iyi input eleman kullanmak içermesi anlamına gelmez

<?php
    echo '<input type="text" name="name" value="' . htmlentities($checkFirstName) . '">';
?>

htmlentities veya htmlspecialchars unutma (kodlama bağlıdır - seninkodlamamod unicode ise, htmlspecialchars'ın kendi htmlentities aksi halde, yeterli olmalıdır). Sadece form alanları için htmlentities kullanmak, ama eğer kullanıcı tarafından sağlanan verileri yazdırın zaman. Aksi takdirde birisi (cross site scripting) saldırıları ya da en azından gibi bir kullanıcı adı sağlayarak hatalı html oluşturmak XSS enjekte olabilir

<script type="text/javascript">execute_evil_code();</script>

yerine tam bir dize yalnızca bir karakter görüntüleme gibi: size bir dizi çalışma ve bunun yerine bir dize var olduğunu düşünüyorsan, normalde, bu olur. var_dump($variable); sizin değişkenlerin türünü görmek için kullanın.

$username gerçekten benzersiz ve doğru satır alıyoruz da, HTW dediği gibi, kontrol edin. phpmyadmin (veya ne olursa olsun araç kullanıyorsanız) içinde (echo $usernameQuery;) çıkan sorguyu çalıştırın. Birden fazla satır döndürdü ise, kullanıcı adınızı (kendisi muhtemelen bir hata) benzersiz değil ve sen almak satır ne de ilk, ama sonuncusu. 's' belki mysql sonuç kümesi tamamen farklı bir şeydir, "john" parçası değildir, çünkü garip. daha yüksek bir düzeyde, ve var_dump bütün $ satırda hata ayıklama.

Buraya tüm php kod koymak deneyin:

   <textarea id="firstname" rows="1">
        <?php
              //connect to database
              //Select data
            if(mysql_num_rows($sql)) {
                 $row = mysql_fetch_row($sql);
                  echo nl2br($row['0']);
            }
        ?>
   </textarea>