IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Demande d'aide pour transcrire Javascript en PHP [PHP 5.4]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut Demande d'aide pour transcrire Javascript en PHP
    Bonjour, je souhaiterais passer la fonction de contrôle sur les champs d'un formulaire du Javascript en PHP
    car sinon mes contrôles sur mon formulaire sont trop facilement court-circuitées

    Voici la partie du code qui me pose des problèmes

    1) Appel de la fonction valider_formulaire en JS sur onsubmit dans la page html
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="http://XXX/action_page.php" method="post" onsubmit="return valider_formulaire(this);" target="_blank">

    2) La fonction valider_formulaire en JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    function valider_formulaire(thisForm) {
    	lst=thisForm.getElementsByTagName('input');
    	selector = "taken";
    	var invalide=true;
    	for (i=0;i<lst.length;i++) {
    		if (lst[i].className.indexOf(selector)!=-1){
    			if (lst[i].type.toLowerCase()=="checkbox") {
    				if (lst[i].checked) {
    					invalide=false;
    					break;
    				}
    			}
    		}
    	}
        if (invalide) {
    	    alert("Merci de sélectionner au moins un produit, s'il vous plait");
    		return false;
    	}
     
    	if (thisForm.prenom.value == '') {
    		alert('Votre prenom doit être rempli');
    		thisForm.prenom.focus();
    		return false;
    	}
    	var c = 0;
    	for (var i = 0; i < thisForm.elements.length; i++) {
    		if (thisForm.elements[i].name == "contact[]") c++;
    	}
    	var elts = thisForm.elements['contact[]'];
    	var compteur = 0;
    	if (c == 1) {
    		if (elts.checked == true) compteur++;
    	} else {
    			for (var i = 0; i < c; i++) {
    				if (elts[i].checked == true) compteur++;
    			}
    	}
    	if (compteur == 0) {
    		alert("Merci d'indiquer un choix (Tout est OK ou demande à être recontacté), s'il vous plait");
    		return false;
    	}
    	return true;
    }
    Première question : Comment appeler ma fonction PHP car je suppose que dans le onsubmit je peux pas la placer

    Merci d'avance pour vos réponses
    Laurent

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Première réponse : le contrôle PHP se fait à reception du formulaire donc dans action_page.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Tu ne peux pas traduire exactement ta fonction JavaScript, car elle s'appuie en partie sur des informations qui ne sont pas transmises au serveur (exemple className). Les seules informations transmises au serveur sont les attributs name et value. Fais un print_r($_POST) ou un var_dump($_POST) pour voir quelles valeurs tu reçois, ça te donnera une idée de comment les vérifier.

    De ton code JavaScript je peux tirer les conclusions suivantes :
    • Au moins un checkbox doit être coché, mais je ne sais pas comment il s'appelle (celui qui correspond au message « sélectionner au moins un produit ») ;
    • Le prénom ne doit pas être vide (d'ailleurs, un appel à trim sera plus fiable qu'une simple comparaison à '') ;
    • Un champ contact[] doit être coché.


    Dans le cas des checkboxes et boutons radio, si rien n'est coché, il n'y aura pas d'entrée avec ce name dans $_POST. Si un input est coché, l'entrée contiendra la donnée de l'attribut value, ou bien 'on' s'il n'y a pas d'attribut value.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Merci Sabotage et Watilin,
    Oui je vois que je ne vais pas pouvoir traduire littéralement et donc je vais avoir un
    peu de tâtonnement, je reviendrai quand j'aurai un peu avancé là-dessus ...

    pour Watilin , je vais suivre tes conseils, effectivement c'est la partie Au moins (un checkbox doit être coché)
    qui va me poser des problèmes ... j'ai une liste qui provient d'une table SQL et qui est fluctuante (Ajout, MAj et suppression).
    Grâce à PHP, et aussi à ce forum , je la propose à l'utilisateur avec pour chacune de ces lignes, une checkbox ... et je dois bien tester à l'envoi
    de mon formulaire que l'utilisateur a au moins validé une ligne ...

  5. #5
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Bon j'ai avancé sur cette partie, déjà acheté un bon bouquin.

    J'ai laissé les contrôles JS existant
    puis j'ai recréé les mêmes en PHP :

    1) Test si les champs sont vides avec isset

    2) Encadrer tous les $_POST de type chaine de caractères avec un htmlspecialchars

    3) Contrôler au mieux la saisie du téléphone et mail avec du regex

    4) Tester qu'au moins une case à cocher est ... cochée
    avec ce type de boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    	$compt_choix = 0;	
    	if (isset($_POST['choix']))
    		{
    			foreach($_POST['choix'] as $valeury)
    			{
    			if (isset($_POST['choix']))
    				$compt_choix++;	
    			}
    		}	
    	if ($compt_choix == 0)
    		{
    			$error = true;
    			$nberror++; 
    		}
    5) Reste la partie envoi de mail que je confie à PHPMailer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $mailP = new PHPmailer();
    $mailP->IsHTML(true);
    $mailP->CharSet = 'UTF-8';   
    $mailP->From='contact@XXXXXXXXXXXXX.com';
    $mailP->AddAddress($destinataire);
    $mailP->FromName="XXXXXXXXXXXXXX";
    $mailP->Subject=$sujet;
    $mailP->Body=$message;
    if(!$mailP->Send()){
    ...
    6) et j'allais oublié en début de mon script PHP
    un test "referer" sinon sortie de programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(isset($_SERVER['HTTP_REFERER'])
      && $_SERVER['HTTP_REFERER']!=''
      && substr($_SERVER['HTTP_REFERER'], 7, strlen($_SERVER['SERVER_NAME'])) == $_SERVER['SERVER_NAME'])
    ...
     
    {

    Merci pour vos commentaires, remarques ...
    Laurent

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Le code 1 se resume à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (empty($_POST['choix'])) {
    Si aucune checkbox n'a été cochée, $_POST['choix'] n'existe pas, donc toutes tes boucles (qui en plus sont fausses) sont inutiles.

    Pour le code 3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!empty($_SERVER['HTTP_REFERER'])) {
       $referer = parse_url($_SERVER['HTTP_REFERER']);
       if ($referer['domain'] != $_SERVER['SERVER_NAME']) {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. demande d'aide pour créer des scripts en Javascript
    Par blueyes29 dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 28/12/2010, 20h52
  2. [MySQL] Demande d'aide pour une erreur php
    Par spespam dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 01/12/2008, 16h22
  3. Demande d'aide pour un menu javascript
    Par Lost-H dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/06/2006, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo