Espace généré automatiquement

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 : Espace généré automatiquement

Re: Espace généré automatiquement

par medianeweb » 26 août 2009, 11:09

Hey les gars, vraiment encore merci. :lol: < je ressemble à peu près à ça en ce moment !!!
Non seulement ça marche trop top (merci à à Dr@ke =D> ) mais de plus mon code est beaucoup plus clair et je sens que je m'affligerai moins de souffrance avec mes ', ", \' et \"...
a bientôt !

Re: Espace généré automatiquement

par AB » 25 août 2009, 22:39

Hey ! Merci pour ces explications entre ' et " ! Voilà enfin, je n'hésiterai plus ! :P =D>
Quand on en a pris l'habitude, effectivement on arrive à coder sans trop se prendre la tête en utilisant les simples quotes et en sortant ses variables - c'est d'ailleurs le même Ryle qui m'en a donné le goût il y a quelques années :)

Juste pour dire qu'il ne faut pas non plus en faire un règle absolue car dans certains cas (beaucoup moins fréquents il est vrai) commencer par des doubles quotes est beaucoup plus facile (ce qui n'empêche pas de sortir ses variables en cas de besoin).

Donc ma règle est à priori de coder avec des simples quotes et de sortir mes variables (à vue de nez dans 98% des cas ) mais de garder l'option double quote en réserve au cas ou ça se complique trop vite, car souvent quand ça se complique trop vite c'est qu'on à mal négocier le départ :wink:

Re: Espace généré automatiquement

par Dr@ke » 25 août 2009, 21:24

Ok Cool, ca je ne savais pas, mais ca explique pas mal de choses.
J'avais effectivement remarqué que certaines fois les variables étaient exécutées et d'autres fois non...
Mais je ne m'étais jamais attardé dessus, vue que je sors toujours les variables...:
La principale différence, c'est qu'entre guillemets (") php va tenter d'interpréter les variables qu'il rencontre (idem pour le \n) :
$var = 'le monde';
echo = "bonjour $var"; // affiche : bonjour le monde
echo = 'bonjour $var'; // affiche : bonjour $var
Mais d'une manière générale, il vaut mieux sortir ses variables des chaines
Et merci pour la précision...

Re: Espace généré automatiquement

par medianeweb » 25 août 2009, 19:14

Hey ! Merci pour ces explications entre ' et " ! Voilà enfin, je n'hésiterai plus ! :P =D>

Re: Espace généré automatiquement

par Ryle » 25 août 2009, 18:58

La principale différence, c'est qu'entre guillemets (") php va tenter d'interpréter les variables qu'il rencontre (idem pour le \n) :
$var = 'le monde';
echo = "bonjour $var"; // affiche : bonjour le monde
echo = 'bonjour $var'; // affiche : bonjour $var
Mais d'une manière générale, il vaut mieux sortir ses variables des chaines, c'est plus lisible et ça évite de s'arracher les cheveux parce qu'on a mit des apostrophes au lieu de guillemets. Par ailleurs le fait que php ne cherche pas à identifier les variables entre aopstrophes permet par conséquent d'améliorer un chouillah les performances (mais doit en falloir vraiment, vraiment beaucoup pour que ça commence à se sentir... c'est plus pour le principe que pour un véritable effet :))

Autre caractéristique utile, entre apostrophes, pas besoin d'échapper les guillemets et inversement :
echo '<img src="monImage.jpg" alt="sonTitre" style="..." />';
// est plus lisible (et donc plus facile à comprendre et à maintenir) que :
echo "<img src=\"monImage.jpg\" alt=\"sonTitre\" style=\"...\" />";

Re: Espace généré automatiquement

par Dr@ke » 25 août 2009, 16:06

$url = 'blablabla.php' et
$url = "blablabla.php" ?
vaut-il mieux utiliser " ou ' ?
Aucune différence, si ce n'est que bizarrement et apparemment \r\n qui remplace ici <br> sont exécutés correctement que entre 2 ".

Re: Espace généré automatiquement

par medianeweb » 25 août 2009, 15:59

Bon il semblerait que mon hébergeur ait bloqué la fonction "mail"... suite à une fausse manip cette nuit qui a généré l'envoie d'environ 5000 mails :(

Donc je peux plus rien tester maintenant, mais dès que c possible je te tiens au courant !

Sinon, pour info, oui, évidemment, l'url sur 3 lignes c'est trop compliqué, ms j'avais fait ça pour isoler les pb...
cela dit, je vais utiliser ta syntaxe, plus claire...
j'en profite pour te poser la question : quelle différence avec
$url = 'blablabla.php' et
$url = "blablabla.php" ?

vaut-il mieux utiliser " ou ' ?

Re: Espace généré automatiquement

par Dr@ke » 25 août 2009, 04:18

$message .= '<a href=\''.$url.'\'>';
$message .= 'www.monsite/inscription_ok.php';
$message .= '</a><br>';
Déjà pourquoi découper l'url en 3 lignes?
Puis: '<a href=\''.$url.'\'>' #-o
Trop compliqué, rassemble donc tout, et ensuite si tu écris simplement comme ceci:
$message .= '<a href="' . $url . '">www.monsite/inscription_ok.php</a><br>';
Ou
$message .= "<a href='" . $url . "'>www.monsite/inscription_ok.php</a>\r\n";
Ps: Faudra peut-être vérifier les autres lignes aussi, suivant le même principe.

Test et dis moi ... :wink:

Re: Espace généré automatiquement

par medianeweb » 25 août 2009, 03:08

Bon voilà j'ai "trouvé", si on peut appeler ça "trouver" !
En y allant pas à pas, j'ai vu que mon bug se trouvait dans le fichier mail.php
J'ai testé chacune des lignes et c'est celle qui est juste avant
$message .= '<a href=\''.$url.'\'>';
qui génère un espace dans $url.
j'ai ajouté la ligne suivante (un peu en désespoir de cause)
$message .=' ';
et là, contre toute attente ça a fonctionné...
je ne comprends pas pourquoi.
Si vous avez une explication à cette bizarrerie :)

Sinon, je continuerai de croire que les lois de l'informatique sont parfois impénétrables...

Salutations et remerciements à ceux qui ont bien voulu se pencher sur mon problème !

A bientôt

:)

Re: Espace généré automatiquement

par medianeweb » 25 août 2009, 02:00

Ok... je viens de tester depuis un PC, et c'est pareil...
Voici donc le code :

Le formulaire

<FORM ACTION="inscription.php" NAME="form_suspension" METHOD="POST" ENCTYPE="x-www-form-urlencoded" onSubmit="return VerifFormulaire(this)" >
<INPUT NAME="nom_utilisateur" ID="Nom" TYPE="text" SIZE="30" maxlength="30" onKeypress="return valid_mail(event);">
<br>
<font> Entrez votre mot de passe</font><br>
<INPUT NAME="mdp_utilisateur" ID="Mot de passe" TYPE="text" SIZE="30" maxlength="15" onKeypress="return valid_mail(event);">
<br>
<font>merci de saisir votre email</font>.<br>
<INPUT NAME="email_utilisateur" ID="Email" TYPE="text" SIZE="30" value="<? echo $email_utilisateur ?>">
<br>
<br>
<font> Confirmez votre email</font><br>
<INPUT NAME="confirm_email" ID="Email de confirmation" TYPE="text" SIZE="30" ><br>
<br>
<INPUT NAME="nom" TYPE="submit" VALUE="Validez >>">
</FORM>

Qui redirige vers la page inscription.php
<?
$aujourdhui = date("d/m/Y");
$nom_utilisateur = $_POST['nom_utilisateur'];
$mdp_utilisateur = $_POST['mdp_utilisateur'];
$email_utilisateur = $_POST['email_utilisateur'];
$confirm_email = $_POST['confirm_email'];
echo "<FONT>Consultez votre boite mail et cliquez sur le lien. A tout de suite !</font>";
$subject = 'Votre abonnement';
include('mail.php');

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: inscription <[email protected]>\r\n";
$headers .= "Reply-To: <[email protected]>\r\n";
$headers .= "X-Mailer: PHP/" . phpversion() . "\n" ;
$headers .= "To: <$email_utilisateur>\r\n";
mail(null, $subject, $message, $headers);


?>


Qui fait appel au fichier mail.php


<?
$url = 'http://www.monsite/inscription_ok.php?';
$url.= 'mdp_utilisateur='.$mdp_utilisateur;
$url.= '&nom_utilisateur='.$nom_utilisateur.'&email_utilisateur='.$email_utilisateur.'/';
$message = 'Paris, le '.$aujourdhui.'<br><br>';
$message .= 'Bonjour <br clear=\'all\'><br clear=\'all\'>';
$message .= 'Vous souhaitez vous inscrire sur notre site de nous vous en remercions vivement.<br clear=\'all\'>';
$message .= 'Pour valider votre inscription, veuillez cliquer sur le lien suivant :<br clear=\'all\'>';
$message .= '<a href=\''.$url.'\'>';
$message .= 'www.monsite/inscription_ok.php';
$message .= '</a><br>';
$message .= 'Cordialement.<br><br>';
$message .= '<br><br><br><i><B>REMARQUE IMPORTANTE:<BR></B>Si le lien contenu dans ce mail ne fonctionne pas, copier le lien ci dessous et coller le dans la barre de navigation de votre navigateur.</i><br>';
$message .= '<i>'.$url.'</i>';

?>


Je vous ai épargné les tableaux de présentation, etc... Alors quand on clique sur le lien, on a l'espace
http://www.monsite/inscription_ok.php?m ... [email protected]

alors que le lien qui s'affiche en fin de mail (après "remarque importante"est le suivant : http://www.monsite/inscription_ok.php?m ... [email protected]

remarque intéressante : lorsque j'inverse les variables dans mon url, ça donne ça :

http://www.monsite/inscription_ok.php?n ... [email protected]

comme si il y avait un bug autour du mot "utilisateur"... ou plutôt après un certain nombre de caractère. Puisque j'ai aussi fait l'essai en modifiant "nom_utilisateur" par "nom" et mon %20 était juste après le &...

Je sais, ça paraît fou...

Alors si vous avez une idée, je suis preneur !!!
Merci à tous !!

*

Re: Espace généré automatiquement

par charabia » 24 août 2009, 21:26

Logiquement non mais tu peux toujours essayer sur un PC. Là il ne devrait pas y avoir de problème, comment un espace peut-il s'ajouter tout seul au milieu d'un mot qui plus est...mystère...

Donne nous le code si jamais c'est toujours pareil qu'on puisse tester aussi.

Re: Espace généré automatiquement

par medianeweb » 24 août 2009, 21:10

Oui, sur plusieurs mails différents, depuis plusieurs machines différentes... mais toutes des MAC et non pas des PC !! Ca pourrait changer qq chose ?

Re: Espace généré automatiquement

par charabia » 24 août 2009, 20:58

as-tu essayé sur un autre mail ?

Re: Espace généré automatiquement

par medianeweb » 24 août 2009, 20:35

Oui, j'ai tout vérifié, retapé, et j'en suis d'autant plus sûr que l'url qui s'affiche ne comporte pas le %20 ni d'espace... et quand je fais un "copier collé" de cette url, ça marche !
:(

Re: Espace généré automatiquement

par dunbar » 24 août 2009, 20:34

Salut
En général le %20 apparaît quand il y a un espace dans l'adresse, est tu certain de ne pas avoir d'espace ?