web-dev-qa-db-fra.com

php, formulaire utilisant la même page après soumission

Je me demande quel est le moyen le plus simple de créer un formulaire avec un bouton user/pass and submit avec php, mais une fois que vous l'avez envoyé, il revient à la même page au lieu de passer à une autre page php.

Je pense à la déclaration if/else mais un peu confus, comment la définir après de nombreux essais mais ne pas obtenir le résultat souhaité

bizarre, j'ai fait tout ce que vous avez dit avant de poster ... mais ...>. <" Disons quelque chose de simple comme ça ...

mais je veux aussi définir si rien n'est entré puis que l'on clique sur sumbit il y aura une erreur .... ça devrait être quelque chose de facile, mais je ne sais pas pourquoi je n'arrive pas à comprendre.

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

Les autres réponses sont justes. il vous suffit de renvoyer l'utilisateur à votre page actuelle dans la propriété "action". Vous pouvez tester pour voir s'ils l'ont fait en utilisant "isset".

Ce qui, je suis surpris, n’a pas encore été mentionné, c’est que votre contribution n’est pas assainie et que vous vous préparez à faire face à une catastrophe. Énorme vulnérabilité de l'injection dans votre attribut d'action:

$_SERVER['PHP_SELF']

Si vous ne désinfectez pas cela, quelqu'un peut simplement modifier l'URL qu'il voit et votre pauvre script PHP n'en saura rien mieux que de le traiter comme votre constante SELF.

En d'autres termes, vous devez utiliser absolument une fonction htmlspecialchars() pour encoder ce paramètre en HTML. Avec cela, votre action devrait ressembler davantage à htmlspecialchars($_SERVER['PHP_SELF']).

6
forresthopkinsa

si la page en cours est index.php, utilisez index.php dans la balise de formulaire comme valeur d’action.

comme ça:

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

vous pouvez vérifier pour le formulaire soumis en mettant:

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

en haut de page

4
codefreak

Il suffit d'utiliser la syntaxe ci-dessous

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

Vous pouvez vérifier si post est défini à l'aide de la méthode isset ().

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

Cette partie de votre code est fausse, vous devez taper: if (! Empty ($ _ POST ["utilisateur"]))

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

C’est exactement comme cela que vous utilisez votre formulaire pour recharger la page lorsque vous cliquez sur le bouton Soumettre dans ce formulaire.

ADDITIONAL: Ajoutez required à toutes les entrées souhaitées ou vérifiez si elles sont vides.

1
Jei

C’est un code que j’ai créé pour contrôler l’apprentissage des champs de saisie requis qui répondent aux exigences. dans ce cas, les données seront envoyées à la base de données. s'il ne répond pas aux exigences, un message peut s'afficher en haut de la page

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

J'espère que c'est une information utile pour vous

1
Boris

Je pense que tous ont oublié la question, c’est-à-dire s’il existe un moyen de rester sur la même page après avoir soumis un formulaire. La réponse est NO. Une fois que vous avez soumis un formulaire, que vous utilisiez la méthode POST ou GET, et supposez bien sûr que vous utilisez $ _SERVER ['PHP_SELF'] ou une action vide, etc. - une nouvelle page est ouverte automatiquement. Cela vaut au moins pour PHP. (J'ai utilisé XAMPP de différentes manières.) Je ne parle pas maintenant d'autres langages de script.

0
Apostolos

ce code vous aidera

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

ou vous pouvez simplement faire ceci:

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

Je vous remercie ....

0
Ehsan Ilahi

Vous pouvez définir dans la soumission du formulaire:

<form method=get action=index.php >

Vous pouvez également laisser complètement de côté l'action, et le message sera automatiquement envoyé au même fichier.

0
yourdeveloperfriend