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 :

formulaire non valide sur tablettes et smartphone ?


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut formulaire non valide sur tablettes et smartphone ?
    Bonjour à tous et merci d'avance pour votre aide.

    voilà j'ai mis en ligne un formulaire qui fonctionne très bien. je reçois bien les messages sur ma boite de messagerie avec les données envoyées par l'internaute et ces données sont parfaitement récupérées dans ma base de données. elles s'affichent dans la zone admin de mon site. j'ai fait des tests sur IE, firefox, chrome, safari, opera, tout fonctionne. j'ai fait des tests également a partir de mon Iphone 4, tout fonctionne aussi.

    Mais voilà, sur l'Iphone 4 de mon fils et sur celui d'un autre pote, rien ne se passe a l'envoi du formulaire. idem sur une tablette galaxy note.
    l'action du formulaire fonctionne puisqu'au onclick, on arrive bien sur la bonne page avec l'information indiquant que le message à bien été envoyé mais je ne reçois pas le message, ni les données en bdd évidemment.
    Comment est-ce possible ?
    et que puis-je faire pour regler ce problème qui me prend le choux depuis 4 jours....

    ci-joint mon code:
    page1: mon formulaire
    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
    <form action="pass2.php" method="post" name="formVisiteurs">
                <fieldset id="visiteurs">
     
                <label for="nomExp" id="labformvisit">Nom</label>   
                <input type="text" id="inpformvisit" name="nomExp" placeholder="Nom" 
                class="text"/><br />
     
                <label for="prenomExp" id="labformvisit">Prénom</label>        
                <input type="text" id="inpformvisit" name="prenomExp" 
                placeholder="Prénom" class="text"/><br />
     
                <label for="telExp" id="labformvisit">Téléphone</label>
                <input type="text" id="inpformvisit" name="telExp" placeholder="Téléphone" 
                class="text"/><br />
     
                <label for="cpExp" id="labformvisit">Code Postal</label>
                <input type="text" id="inpformvisit" name="cpExp" placeholder="Code Postal" 
                class="text"/><br />
     
                <label for="villeExp" id="labformvisit">Ville</label>
                <input type="text" id="inpformvisit" name="villeExp" 
                placeholder="Ville de résidence" class="text"/><br />
     
                <label for="emailExp" id="labformvisit">E-mail</label>        
                <input type="text" id="inpformvisit" name="emailExp" 
                placeholder="Adresse de messagerie" class="text"/><br />
                <p>Inscription à la Newsletter :
                <label for="newsExp" class="radiovisit">Oui</label>
                <input type="radio" name="newsExp" value="oui"/>
                <label for="newsExp" class="radiovisit">Non</label>
                <input type="radio" name="newsExp" value="non" checked ="checked" />
                </p>
                <p class="champsoblig">Tous les champs sont obligatoires.</p>
                <br /><input type="submit" id="boutonformvisit" name="submit" 
                onClick="javascript:verifForm('formVisiteurs');" value="Envoyez votre demande" />
     
                </fieldset>
                </form>
    Le javascript:verifForm:
    Code javascript : 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
    function verifForm(p_strNomForm){
    	if(document.forms[p_strNomForm].elements["nomExp"].value == ""){
    		alert("Veuillez nous indiquez votre nom");
    		return false;
    	}
    	if(document.forms[p_strNomForm].elements["prenomExp"].value == ""){
    		alert("Veuillez nous indiquez votre prenom");
    		return false;
    	}
    	if(document.forms[p_strNomForm].elements["telExp"].value == ""){
    		alert("Veuillez nous indiquez votre telephone");
    		return false;
    	}
    	if(document.forms[p_strNomForm].elements["cpExp"].value == ""){
    		alert("Veuillez nous indiquez votre code postal");
    		return false;
    	}
    	if(document.forms[p_strNomForm].elements["villeExp"].value == ""){
    		alert("Veuillez nous indiquez votre ville de residence");
    		return false;
    	}
        if(document.forms[p_strNomForm].elements["emailExp"].value == ""){
    		alert("Veuillez nous indiquez votre email");
    		return false;
    	}else{
    		var mailExp = document.forms[p_strNomForm].elements["emailExp"].value;
    		var verif = /^[a-zA-Z0-9_\.-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,10}$/;
    		  if (verif.exec(mailExp) == null){
    			alert("Veuillez saisir une adresse mail valide");
    			return false;
    	}
     
    	}
        document.forms[p_strNomForm].submit();
    }

    La page2 :
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <?php
    	include ('connexion/connexion.php');
    	include ('lib/libGen.php');
     
     
     //récupération des informations et envoi en mail
     
                                	if(isset($_REQUEST["nomExp"])){
    								$nom=$_REQUEST["nomExp"];
                                    $prenom=$_REQUEST["prenomExp"];
    								$tel=$_REQUEST["telExp"];
    								$cp=$_REQUEST["cpExp"];
    								$ville=$_REQUEST["villeExp"];
                                    $email=$_REQUEST["emailExp"];
    								$newsexp=$_REQUEST["newsExp"];
     
                                    $sujet= "Visiteurs salon2013";
     
    								$dest = "monmail@hotmail.fr";
     
    								//Reception du mail
     
                 $msg = 'Bonjour,'."\r\n\r\n";
    			 $msg .= 'Ce mail est une demande d entree gratuite au salon 2013 envoyee depuis le site internet par '.$prenom.' '.$nom."\r\n";
    			 $msg .= 'ce visiteur habite la ville de : '.$cp.' '.$ville."\r\n";
    			 $msg .= 'pour le contacter : '.$tel.' '.$email."\r\n\r\n";
    			 $msg .= 'Peut-on inscrire ce visiteur a la newsletter : '.$newsexp."\r\n\r\n";
     
    								//En tête du mail
    								$headers = 'From : '.$nom.'<'.$email.'>'."\r\n";
    								$headers .= 'Reply-To: <'.$email.'>'."\r\n";
     
     
     
    								//Envoi du mail
                                    $resultat = Mail($dest,$sujet,$msg,$headers);
     
     
                                    if($resultat==true){
     
    								//saisie dans la base de donnée :
    $champs = "date_visit13,nom_visit13,prenom_visit13,tel_visit13,cp_visit13,ville_visit13,mail_visit13,newsletter_visit13";
    $value =  "'" . date("Y-m-d")."'," . "'" .$nom. "'," . "'" .$prenom. "'," . "'" .$tel. "'," . "'" .$cp. "'," . "'" .$ville. "'," . "'" .$email. "'," . "'" .$newsexp. "'" ;
    $req = "INSERT INTO visiteurs2013($champs) VALUES(".$value.")";
    $res = mysql_query($req);
     
     
     
     
     
                                    }//fin if envoi mail ok
     
                                }else{
     
     
                     }//fin if formulaire envoyé
                ?>

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 383
    Points
    383
    Par défaut
    Tu peux déjà essayer de remplacer $_REQUEST par $_POST et au début du fichier php rajouter un print_r($_POST)

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut pas de changements
    Merci pour ta réponse,
    j'ai viré les $_request pour les $_post
    mais pas de changements. le problème est le même. il y a quelque chose dans mon code qui ne fonctionne pas avec certains supports mobile mais je ne trouve pas.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    1/ pour commencer, il faudrait écrire un code valide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <label for="nomExp" id="labformvisit">Nom</label>
    <input type="text" id="inpformvisit" name="nomExp" placeholder="Nom"
    class="text"/><br />
    
    <label for="prenomExp" id="labformvisit">Prénom</label>
    <input type="text" id="inpformvisit" name="prenomExp"
    placeholder="Prénom" class="text"/><br />
    • Un id doit être UNIQUE
    • L'attribut for="..." du <label> doit se référer à l'attribut id="..." de l'<input> ou <select>...

    2/ Mettre des echo ...; et/ou var_dump(...); dans le code (à des endroits "stratégiques") :
    -> pour vérifier si les variables sont OK
    -> pour savoir à quel endroit du code ça ne va plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $resultat; // par exemple, serait un bon indicateur
    3/ Tester sur l'iphone 4 du fiston

    [EDIT]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = Mail($dest,$sujet,$msg,$headers);
    Au cas où se serait "sensible à la casse : remplacer Mail(... par mail(...

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    merci, je vais essayer ces nouveaux conseils et je remercie tous ceux qui se penchent sur mon cas.
    Il se peut que mon code ne soit pas parfait, c'est meme une certitude mais pour autant ça fonctionne sauf sur certains iphone et sur les samsung galaxy.
    il y a donc quelque chose qui coince vis a vis de safari mobile et chrome mobile puisque sur pc ça marche aussi bien avec safari qu'avec chrome.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Plus le code est valide, plus il a de chance d'être compatible avec TOUS les medias (PCs, tablettes, Smartphones).

    => http://validator.w3.org/

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    merci jr,
    a quels endroits du code tu placerais des echo $_resultat ?
    pourrais tu les positionner dans mon code ci-dessus dans la bonne synthaxe?
    merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code php : 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
    //Envoi du mail
    echo 'DEBUT Essai envoi par email :<br />';
    echo 'dest : '.$dest.'<br />';
    echo 'sujet : '.$sujet.'<br />';
    echo 'msg : '.$msg.'<br />';
    $resultat = mail($dest,$sujet,$msg,$headers);
    echo 'resultat : '.$resultat.'<br />';
    if($resultat){
    	echo 'ENVOI EMAIL => OK !<br />';
    } else {
    	echo 'ENVOI EMAIL => PAS OK !<br />';
    }
    if($resultat){
    	echo 'DEBUT Essai enregistrement en BdD :<br />';
     
    	//saisie dans la base de donnée :
    	$champs = "date_visit13,nom_visit13,prenom_visit13,tel_visit13,cp_visit13,ville_visit13,mail_visit13,newsletter_visit13";
    	$value = "'" . date("Y-m-d")."'," . "'" .$nom. "'," . "'" .$prenom. "'," . "'" .$tel. "'," . "'" .$cp. "'," . "'" .$ville. "'," . "'" .$email. "'," . "'" .$newsexp. "'" ;
    	$req = "INSERT INTO visiteurs2013($champs) VALUES(".$value.")";
    //	$res = mysql_query($req);
    	$res = mysql_query($req) or die('Erreur SQL :<br />'.$req.'<br />'.mysql_error()); // TEST LOCAL
    	if($res){
    		echo 'ENREGISTREMENT BDD => OK !<br />';
    	} else {
    		echo 'ENREGISTREMENT BDD => PAS OK !<br />';
    	}
    }
    C'est du débogage basique.

    A noter : mail(.....) (en minuscule)

    N.B. Ça ne te donnera pas d'explication en cas d'échec, mais ça te diras au moins si c'est l'envoi du mail ou l'enregistrement en BdD qui coince.

    Le fait que ça ne fonctionne pas UNIQUEMENT sur certains medias ne m'inspire aucune solution...

  9. #9
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut $resultat
    Alors voilà, j'ai fait des test avec les echo de résultats.
    tout es ok, l'envoi du formulaire et l'insert en bdd. sur les test négatifs de certains iphone et de tablettes samsung ou smartphone samsung galaxy l'echo donne ceci :
    DEBUT Essai envoi par email :
    dest : monemail@hotmail.fr
    sujet : Visiteurs salon 2013
    msg : Bonjour, Ce mail est une demande d entree gratuite au salon 2013 envoyee depuis le site internet par philippe echotablette ce visiteur habite la ville de : 02300 laon pour le contacter : 0612131415 info@free;fr Peut-on inscrire ce visiteur a la newsletter : oui
    resultat : 1
    ENVOI EMAIL => PAS OK !
    Donc les champs du formulaire sont bien pris en compte mais l'envoi du formulaire ne fonctionne pas.
    prise de tête !!!!

  10. #10
    Invité
    Invité(e)
    Par défaut
    Tu n'avais pas dit que tu avais une adresse @hotmail.fr !!

    Le problème vient peut-être de là !
    hotmail.fr n'a pas bonne réputation, et pourrait être bloqué.

    Teste avec une autre adresse email (autre que hotmail.fr)

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 383
    Points
    383
    Par défaut
    C'est normal que l'envoi d'email ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $email=$_REQUEST["emailExp"];
    ....
    $headers = 'From : '.$nom.'<'.$email.'>'."\r\n";
    En gros, ton serveur à l'adresse exemple.com envoie un email à monemail@hotmail.fr en se faisant passer pour tartempion@domaine.com

    Le soucis c'est que l'anti spam de @hotmail.fr va contacter domaine.com et lui demander si le serveur exemple.com est autorisé à envoyer des mails en @domaine.com ...

    Si tu veux que ca fonctionne ton champ From doit être de la forme " cequetuveux <quituveux@ladressedetonsite.com> "

    Pas dit que ca fonctionne, vu qu'il y a beaucoup d'autres conditions, mais c'est un bon début.

    edit : et comme le dit jreaux62 , hotmail et tous les prestataires d'emails gratuit ont des anti spams assez pointilleux. La boite mail de ton FAI sera plus permissive

  12. #12
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    ok je vais essayer sur une adresse mail du type uneadresse@monsite.com mais j'ai peur que ça ne fonctionne pas davantage car quand le problème est apparu, le site etait en ligne avec une adresse du type :
    uneadresse@monsite.com.
    c'est dans mes pages de test que j'ai mis une adresse @hotmail.fr
    mais bon, je vais réessayer.
    A+
    merci encore

  13. #13
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut on avance...
    bon effectivement avec une adresse mail du type : mail@monsite.com ça a marché sur l'iphone de mon fils donc on progresse. sur les android type tablette asus et samsung, status-quo ?? envoie mail pas ok! alors que tous les champs sont reconnus...

  14. #14
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = mail($dest,$sujet,$msg,$headers);
    il y a là quelque chose que les android réfutent. ce doit etre la fonction mail puisque les echo dest - sujet - msg - headers s'affichent !

  15. #15
    Invité
    Invité(e)
    Par défaut
    Et en "étoffant" l'entête du mail ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //En tête du mail
    $headers = 'From : '.$nom.'<'.$email.'>'."\r\n";
    $headers .= 'Reply-To: <'.$email.'>'."\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/plain; charset=utf-8\r\n"; // (format TEXTE)
    //$headers .= "Content-type: text/html; charset=utf-8\r\n"; // OU (format HTML)
    A lire => mail() PHP
    Note:

    Si le message n'est pas reçu, essayez d'utiliser uniquement un caractère LF (\n). Quelques agents de transfert de mail Unix (par exemple » qmail) remplacent le caractère LF par le caractère CRLF automatiquement (ce qui revient à doubler le caractère CR si le caractère CRLF est utilisé). Ceci doit être un dernier recours car cela ne correspond pas à la » RFC 2822.

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

Discussions similaires

  1. Colorer champs formulaire non validés..
    Par socket77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/03/2008, 10h27
  2. NameSpaces non valide sur Office Open
    Par Heureux-oli dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 07/01/2008, 10h55
  3. "Argument non valide" sur requête
    Par KEROZEN dans le forum Access
    Réponses: 4
    Dernier message: 15/08/2007, 20h35
  4. Erreur, argument non valide sur IE
    Par Babssss dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/03/2007, 07h08
  5. [JDBC] Opération non valide sur un ensemble
    Par marti dans le forum JDBC
    Réponses: 2
    Dernier message: 13/10/2005, 19h17

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