2013-02-28 7 views
9

Zastanawiam się, jaki jest najłatwiejszy sposób na powiedzenie formularza z użytkownikiem/przekazem i przycisk przesyłania z php, ale po przesłaniu go wraca do tej samej strony zamiast do kolejna strona php.php, formularz korzystający z tej samej strony po złożeniu

Zastanawiam if/else ale nieco mylić, jak ustawić go po wielu próbach, ale wciąż nie wynikiem chciał

dziwne zrobiłem wszystkie te chłopaki powiedział przed posted..but ...>. < " powiedzmy tylko coś prostego, jak to ...

ale chcę też ustawić, jeśli nic nie zostanie wpisane następnie wypełnij kliknięciu nie będzie błędu .... powinno być coś proste, ale don” wiem dlaczego ja nie potrafię zrozumieć to

<?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

co to jest "pożądany wynik"? –

+0

po próbie wpisania kodu. postaramy się to naprawić ... –

+0

ustaw akcję formularza na '" "' – deadlock

Odpowiedz

3

jeśli bieżąca strona jest index.php, korzystanie index.php w postaci znacznika jako wartość akcji

tak:.

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

u można sprawdzić formę przekazywanych przez wprowadzenie:

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

na górze strony

+0

Ustawienie Akcja na PHP_filename (np. index.php) idzie w/o mówiąc oczywiście, więc nic nie zmienia. – Apostolos

0

Można zdefiniować w składaniu formularza:

<form method=get action=index.php > 

Można również zostawić działanie z całkowicie, i automatycznie opublikuje/dotrze do tego samego pliku.

2

Wystarczy użyć poniżej składni

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

Można sprawdzić, czy post jest ustawiana za pomocą isset() metody.

+3

Nie w3c zgodne! Zła wartość "" dla atrybutu "akcja" na elemencie "formularz": nie może być pusta. – Pete

1

To jest kod, który stworzyłem, aby kontrolować uczenie się, wymagane pola wprowadzania spełniają wymagania. gdy tak się stanie, dane zostaną przesłane do bazy danych. jeśli nie spełnia wymagań, nie będzie wiadomości mogą być wyświetlane na górze strony

<?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'); 
} ?> 

Mam nadzieję, że jest to pomocne informacje dla Ciebie

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"; 
     } 
    } 
    ?> 

Ta część kodu jest źle, należy wpisać: if (! empty ($ _ POST ["user"]))

5

Inne odpowiedzi są prawidłowe; wystarczy odesłać użytkownika z powrotem do bieżącej strony w usłudze "action". Możesz sprawdzić, czy zrobili to, używając "isset".

Coś, co mnie zaskoczyło, nie zostało jeszcze wspomniane, jest to, że twój wkład nie jest oczyszczony, a ty ustawiasz się na katastrofę.Ogromna luka zastrzyk w atrybucie action:

$_SERVER['PHP_SELF'] 

Jeśli nie zdezynfekować to, to, że ktoś może po prostu zmodyfikować adres URL, który widzą i skrypt PHP ubogich nie będą wiedzieć lepiej niż do procesu jako twoja stała SELF.

Innymi słowy absolutnie musi użyć funkcji htmlspecialchars() do kodowania html tego parametru. Dzięki temu twój action powinien wyglądać bardziej jak htmlspecialchars($_SERVER['PHP_SELF']).

+0

To nie ma znaczenia dla pytania, czyż nie? – Apostolos

+0

@Apostolos To ma znaczenie dla jego przypadku użycia, prawda? – forresthopkinsa

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

To jest dokładnie sposób pracy z formularzem w celu ponownego załadowania strony po kliknięciu przycisku przesyłania w tym formularzu.

DODATKOWE: Dodaj required wszystkim wejście chcesz być wymagane lub sprawdzić, czy jest ona pusta.

+0

możesz podać więcej informacji, dlaczego jest to poprawna odpowiedź? – slfan

+0

Dokładnie w jaki sposób sporządzasz formularz. – Jei

0

ten kod pomoże Ci

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

lub może po prostu to zrobić:

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

Dziękuję ....

0

myślę, że wszystkie zostały pominięte rzeczywisty pytanie, tj. jeśli istnieje sposób, aby pozostać na tej samej stronie po przesłaniu formularza. Odpowiedź brzmi: NO. Po przesłaniu formularza - niezależnie od tego, czy korzystasz z metody POST lub GET, i oczywiście przy założeniu, że używasz $ _SERVER ['PHP_SELF'] lub pustego działania, itp. - nowa strona zostanie automatycznie otwarta. Dotyczy to przynajmniej PHP. (Próbowałem na wiele różnych sposobów używając XAMPP.) Nie myślę teraz o innych językach skryptowych.