2013-02-28 45 views
9

Yapmanın en kolay yolunun ne olduğunu merak edelim, kullanıcı/pass ile bir form diyelim ve php ile gönder düğmesine basarsak da, gönderdikten sonra aynı sayfaya gitmek yerine başka bir php sayfası. Ben/else ama biraz sürü denemeden sonra ayarlayın ama yine sonuç istediği almıyorum nasıl karıştı eğer düşünüyorumphp, formunu doldurduktan sonra aynı sayfayı kullanarak

garip Tüm bu siz bana posted..but önce söylediğim vermedi ...>. < " ' ... sadece bir şey bu gibi basit söylemek

izin ama ben de hiçbir şey bir hata orada olacağım o zaman tıklandığında sumbit girilirse .... ayarlamak kolay bir şey olmalı istiyorum ama don Ben geçerli sayfa index.php, eylemin değeri olarak form etiketine kullanım index.php ise

<?php 
function userPass() 
{ 
    echo "<form method='post' action=" . $_SERVER['PHP_SELF'] . ">"; 
    echo "<input type='text' name='user' /><br/>"; 
    echo "<input type='text' name='pass' /><br/>"; 
    echo "<input type='submit' value='Login' />"; 
} 
    if(empty($_POST["user"])) 
    { 
     userPass(); 
    } 
    if(!(empty($_POST["user"]))) 
    { 
     if($_POST["user"] == "comp") 
     { 
      echo "Welcome comp"; 
     } 
     else 
     { 
      echo "Wrong user"; 
     } 
    } 
    ?> 
+0

"result wanted" nedir? –

+0

kodunuzun bazı girişimlerini gönderin. Bunu düzeltmeye çalışacağız ... –

+0

form eylemini "" " – deadlock

cevap

3

onu anlamaya gibi olamaz neden bilmiyorum böyle

.

<form action="index.php" method="post"> 
</form> 

u koyarak gönderilen form için kontrol edebilirsiniz:

if(isset($_POST)){ 
... 
} 

sayfa

+0

Ayarına ayarlama PHP_filename (örn. index.php) eylemi elbette ki söyleyemez, bu yüzden hiçbir şey değişmez. – Apostolos

0

Sen form gönderme tanımlayabilirsiniz üstündeki:

<form method=get action=index.php > 

Ayrıca tamamen eylemi bırakabilir, ve aynı dosyaya otomatik olarak gönderilecek/alınacaktır.

2

Sadece Sen sonrası() yöntemi isset kullanılarak ayarlanmış olup olmadığını kontrol edebilirsiniz sözdizimi

<form method="post" action=""> 

altında kullanın.

+3

w3c uyumlu değil! 'Form' öğesinde 'öznitelik' eylemi için '' hatalı 'değeri: Boş olmayan olmalıdır. – Pete

1

Bu, gerekli girdi alanlarını öğrenmeyi kontrol etmek için oluşturduğum bir koddur. bu olduğunda, veri veritabanına gönderilecektir. o gereksinimlerini karşılamak değilse, bu size

1
<?php function userPass() { 
    echo "<form method='post' action=" . $_SERVER['PHP_SELF'] . ">"; 
    echo "<input type='text' name='user' /><br/>"; 
    echo "<input type='text' name='pass' /><br/>"; 
    echo "<input type='submit' value='Login' />"; } 
    if(empty($_POST["user"])) 
    { 
     userPass(); 
    } 
    *if(!(empty($_POST["user"])))* 
    { 
     if($_POST["user"] == "comp") 
     { 
      echo "Welcome comp"; 
     } 
     else 
     { 
      echo "Wrong user"; 
     } 
    } 
    ?> 

kodunuzun bu bölümü için yararlı bir bilgidir bir mesaj sayfasında umarım

<?php 
if (!isset($_POST['submitform'])) { 
} 
else 
{ 
$_SESSION['firstname'] = $_POST['firstname']; 
$_SESSION['lastname'] = $_POST['lastname']; 
$_SESSION['email'] = $_POST['email']; 
$_SESSION['mobile'] = $_POST['mobile']; 
$_SESSION['telephone'] = $_POST['telephone']; 
$_SESSION['place'] = $_POST['place']; 
$_SESSION['street'] = $_POST['street']; 
$_SESSION['housenumber'] = $_POST['housenumber']; 
$_SESSION['gender'] = $_POST['gender']; 

if (empty($_POST['firstname']) or empty($_POST['lastname']) or empty($_POST['email']) or empty($_POST['mobile'])or empty($_POST['telephone']) or empty($_POST['place']) 
or empty($_POST['street']) or empty($_POST['housenumber']) or !isset($_POST['gender'])) 
{ 
    echo "Sending denied"; 
} 
else 
{  
    require 'database.php'; 

    header('Location: succes.php'); 
} ?> 

üstündeki gösterilebilir olacak yanlış, yazmalısınız: eğer (! boş ($ _ POST ["kullanıcı"]))

5

Diğer cevaplar doğru; Kullanıcıyı "action" özelliğindeki geçerli sayfanıza geri göndermeniz yeterlidir. "isset" kullanarak bunu yapıp yapmadıklarını test edebilirsiniz.

Şaşırdığım bir şeyden henüz bahsetmedim, girişinizin dezenfekte edilmemesi ve kendinizi felakete sokmanız.senin action özelliğinde İri enjeksiyon açığı: Bu sterilize yoksa

$_SERVER['PHP_SELF'] 

, sonra birisi gördükleri URL'yi değiştirebilir ve fakir PHP sürecine daha iyi anlayamayacaksınız SELF sabitiniz olarak.

Diğer bir deyişle, kesinlikle , bu parametreyi html kodlamak için htmlspecialchars() işlevini kullanmalısınız. Bununla action, htmlspecialchars($_SERVER['PHP_SELF'])'a benzemelidir.

+0

Bu, bu soruyla alakasız, değil mi? – Apostolos

+0

@Apostolos Kullanım durumu ile oldukça alakalı, değil mi? – forresthopkinsa

0
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 

Bu formdaki gönder düğmesini tıklattığınızda sayfayı yeniden yüklemek için formunuzla tam olarak bu şekilde çalışabilirsiniz. EK

: gerekli ya da boş olmadığını kontrol olmak istedim tüm girişine required ekleyin.

+0

, bunun geçerli bir yanıt olduğunu neden daha fazla bilgi verebilir misiniz? – slfan

+0

Formunuzu tam olarak böyle yaparsınız. – Jei

0

bu kod size

<form action="<?= $_SERVER['REQUEST_URI'] ?>" method="post"> 

yardımcı olacaktır ya da sadece bu yapabilirdi:

<form action="" method="post"> 

teşekkür ederiz ....

0

tüm gerçek soru cevapsız olduğunu düşünüyorum, Yani bir form gönderdikten sonra aynı sayfada kalmanın bir yolu varsa. Cevap NO'dur. Bir form gönderdikten sonra - POST veya GET yöntemini kullanıp kullanmadığınızı ve tabii ki $ _SERVER ['PHP_SELF'] veya boş eylemi kullandığınızı varsayarak - otomatik olarak yeni bir sayfa açılacaktır. Bu en azından PHP için geçerlidir. (XAMPP'yi kullanarak çok farklı yollar denedim.) Şimdi diğer komut dizileriyle ilgili değilim.

İlgili konular