Vérification champs

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Vérification champs

Re: Vérification champs

par khaavren59 » 10 févr. 2016, 12:22

Je ne sais pas quoi faire là:
<?php
    $bdd = new PDO('mysql:host=localhost;dbname=***', '***', '***');
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
 
    if(isset($_POST['ajoutertype']))
{
if(!empty($_POST['code_type']) AND !empty($_POST['nom_type']))
{
$code_type = $_POST['code_type'];
$nom_type = $_POST['nom_type'];

 $code_nouveau = "SELECT code_type FROM types_sites WHERE code_type='".$code_type."'";
 $resultat = mysqli_query ($code_nouveau);
 $nombre_code = mysqli_num_rows($resultat);
 if($nombre_code < 1)

    {
        $inserttypes_sites = $bdd->prepare("INSERT INTO types_sites(code_type, nom_type) VALUES(?, ?)");
        $inserttypes_sites->execute(array($code_type, $nom_type));

if (!$inserttypes_sites) {
   echo "\nPDO::errorInfo():\n";
   print_r($bdd->errorInfo());
}
else{
echo '<script>code();</script>';
}
echo '<script>recaptype();</script>';
}}}
?>

Re: Vérification champs

par Spols » 10 févr. 2016, 12:16

Quel bazar dans ce code.

Tu démarre tes requête en objet puis tu fait une requête differement ce qui produit le message d'erreur
Ensuite tu as des instruction qui veulent rien dire
$inserttypes_sites = $bdd->prepare('mauvaise syntaxe sql');

Et enfin les exit; sont probablement la cause de la non éxécution de recaptype()
car le script php est arreté et donc il ne doit pas y avoir d'appel à cette fonction dans ton code html

De grâce, utilise les balise
 sur le forum, le code est bien plus lisible

Re: Vérification champs

par khaavren59 » 10 févr. 2016, 12:07

warning: mysqli_query() expects at least 2 parameters, 1 given in C:/www
warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:/www

Re: Vérification champs

par khaavren59 » 10 févr. 2016, 12:05

J'ai essayé ça, et maintenant, peu importe ce que je rentre la fonction code marche, mais pas la recaptype, et j'ai des erreurs sur le fond
<?php
$bdd = new PDO('mysql:host=localhost;dbname=***', '***', '***');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

if(isset($_POST['ajoutertype']))
{
if(!empty($_POST['code_type']) AND !empty($_POST['nom_type']))
{
$code_type = $_POST['code_type'];
$nom_type = $_POST['nom_type'];

$code_nouveau = "SELECT code_type FROM types_sites WHERE code_type='".$code_type."'";
$resultat = mysqli_query ($code_nouveau);
$nombre_code = mysqli_num_rows($resultat);
if($nombre_code < 1)

{
$inserttypes_sites = $bdd->prepare("INSERT INTO types_sites(code_type, nom_type) VALUES(?, ?)");
$inserttypes_sites->execute(array($code_type, $nom_type));

$inserttypes_sites = $bdd->prepare('mauvaise syntaxe sql');
if (!$inserttypes_sites) {
echo "\nPDO::errorInfo():\n";
print_r($bdd->errorInfo());
}
else{
echo '<script>code();</script>';
exit;
}
echo '<script>recaptype();</script>';
exit;
}}}
?>

Re: Vérification champs

par Spols » 10 févr. 2016, 09:06

Tu devrais commencer par indenter ton code correctement, il y a des accolades qui manquent et donc un if qui ne sert à rien.

Ensuite il te faut comprendre comment fonctionne le header('location:XX'); de php.
Il ne faut jamais avoir la moindre sortie (que ce soit un echo, du html hors balise php ou même un espace avant la première balise <?php).
Le header va dire à ton navigateur de changer de page sans afficher quoi que ce soit.

Dans ton cas, je supposerai qu'un cache permet d'effectuer le header malgré les sorties de php. Je pense que tu devrais abandonner le header au profit d'une redirection javascript

Re: Vérification champs

par khaavren59 » 09 févr. 2016, 18:17

C'est le header qui marche, les fonctions java ne marchent pas

Re: Vérification champs

par Spols » 09 févr. 2016, 18:11

Le javascript ne peut pas s'éxecuter si tu as un header en php qui fonctionne. Mais ce header php ne devrait pas fonctionner car tu as des echo juste avant

Est-ce le header php qui marche ou le redirectcode de javascript ?
Que te dit ta console javascript ?

Re: Vérification champs

par khaavren59 » 09 févr. 2016, 16:59

Oops, merci. Mais le problème persiste, mon header location a lieu et mes javascripts ne s'exécutent pas..

Re: Vérification champs

par Spols » 09 févr. 2016, 16:57

J'ai pas tout analysé, mais tu as un } de trop en fin de fonction code()

Vérification champs

par khaavren59 » 09 févr. 2016, 16:46

Bonjour à tous,

je possède un formulaire qui traite une insertion dans une table. J'ai ajouté quelques lignes qui empêchent de rentrer des doublons pour les champs uniques, mais j'aimerais qu'avec mes 2 javascripts, une alerte apparaisse, prévenant l'utilisateur qu'il ne peut pas ajouter sa valeur, et qu'en cliquant, la page se recharge.

voilà mon code, quelqu'un a une idée de pourquoi ça ne marche pas?
<?php
session_start(); // Ouverture de la session pour avoir accès au variable de session.
?><!DOCTYPE html>
<meta charset="utf-8" />
<?php include("../menu.php") ?>
<link rel="stylesheet" type="text/css" href="/DIAISI/style.css">
<?php include("verifadmin.php") ?>
 
    <title>Ajout d'un type de sites</title>
 
<script type="text/javascript">
function code(){
        alert("Vous ne pouvez pas créer ce type de site, il est déjà présent dans la base'");
        return;
    }
}
</script>   
 
<script type="text/javascript">
function redirectcode(){
        document.location.href="http://localhost/DIAISI/admin/newtype.php";
      }
   </script>
 
<?php
    $bdd = new PDO('mysql:host=localhost;dbname=***', '***', '***');
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  
    if(isset($_POST['ajoutertype']))
{
if(!empty($_POST['code_type']) AND !empty($_POST['nom_type']))
    
$code_type = $_POST['code_type'];
$nom_type = $_POST['nom_type'];
 
 $code_nouveau = "SELECT code_type FROM types_sites WHERE code_type='".$code_type."'";
 $resultat = mysqli_query ($code_nouveau);
 $nombre_code = mysqli_num_rows($resultat);
 if($nombre_code < 1)
 
    {
        $inserttypes_sites = $bdd->prepare("INSERT INTO types_sites(code_type, nom_type) VALUES(?, ?)");
        $inserttypes_sites->execute(array($code_type, $nom_type));
 
        $inserttypes_sites = $bdd->prepare('mauvaise syntaxe sql');
if (!$inserttypes_sites) {
   echo "\nPDO::errorInfo():\n";
   print_r($bdd->errorInfo());
}
else{
echo '<script>code();</script>';
echo '<script>redirectcode();</script>';
}
header('Location: recaptypes.php');exit;
}}
?>
 
<body>
      
    <form id="newtype" method="post" action="newtype.php">
        <fieldset>
            <legend>
                Ajout d'un type de sites
            </legend>
        <label>Nom de code du type: <input type="text" name="code_type" placeholder="Nom de code" required autofocus/></label><br/>    
        <label>Nom entier du type: <input type="text" name="nom_type" placeholder="Nom du type" required autofocus/></label><br/>    
        </fieldset>
        <input type="submit" name="ajoutertype" value="ajouter" />
    </form>
   
</body>
</html>
 
<input type="button" name="retour" value="retour" onclick="self.location.href='gestioninfra.php'" onclick>