begin process at 2012 05 30 22:50:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

erreur de syntaxe quand je veux obliger un utilisateur a mettre un @ et un . dans un champ email


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

erreur de syntaxe quand je veux obliger un utilisateur a mettre un @ et un . dans un champ email

mardi 19 juillet 2011 à 20:06:16 | erreur de syntaxe quand je veux obliger un utilisateur a mettre un @ et un . dans un champ email

gb66

Bonjour a vous et merci de m'aider voila je veux obliger l'utilisateur a mettre un . et un @ pour un champ formulaire mais quand j'ai rajouter ses ligne
$point=strpos($email,".");

$aroba=strpos($email,"@");

if($point=='')
{echo "Votre email doit comporter un <b>point<b>";}

elseif($aroba=='')
{echo "Votre email doit comporter un <b>'@'<b>";}

j'ai eu un message d'erreur a la ligne

else $email="";

mais si jenleve les ligne du . et du @ je suis capable denvoyer les donner l'erreur doit surement etre cave mais je suis debutant alors si vous pouvez maider a trouver l'erreur se serais vraiment apprecié voici le code php

<?php
if(isset($_POST['email'])) $email=$_POST['email'];
$point=strpos($email,".");
$aroba=strpos($email,"@");
else $email="";
if($point=='')
{echo "Votre email doit comporter un <b>point<b>";}
elseif($aroba=='')
{echo "Votre email doit comporter un <b>'@'<b>";}

if(empty($email))

{
echo "Il y a un champs vide remplissez le";
}

else
{
// connexion à la base
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base

mysql_select_db('w4e',$db) or die('Erreur de selection '.mysql_error());
// on écrit la requête sql
$sql = "INSERT INTO compte(id,email) VALUES('','$email')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';

mysql_close(); // on ferme la connexion
}
?>

merci encore
mardi 19 juillet 2011 à 20:29:08 | Re : erreur de syntaxe quand je veux obliger un utilisateur a mettre un @ et un . dans un champ email

kohntark

Membre Club
Salut,

2 petites choses qui facilitent ... heu ... les choses :
- utilise la balise code
- pense à donner l'erreur que tu obtiens


Tu ne mets pas d'accolades, pourquoi pas, sauf que :
Code PHP :
<?php
if($machin)
  echo 'truc';
else
  echo 'bidule';
?>

C'est syntaxiquement valide, mais pas ça :
Code PHP :
<?php
if($machin)
  echo 'truc';
  echo 'trucmuche'; // n'est plus dans la condition if()
else // 1 else alors que l'on est plus dans une condition if() => plantage
  echo 'bidule';
?>


Sans accolades seule la ligne qui suit l'instruction if ou else est prise en compte.
Tu as plus d'une ligne dans le if() => tu dois mettre des accolades

Code PHP :
<?php
if (isset($_POST['email'])) {
    $email = $_POST['email'];
    $point = strpos($email, ".");
    $aroba = strpos($email, "@");
} else
    $email = "";
//...
?>



Cordialement,

Kohntark -
mardi 19 juillet 2011 à 20:39:37 | Re : erreur de syntaxe quand je veux obliger un utilisateur a mettre un @ et un . dans un champ email

kohntark

Membre Club
Et puis :
Ta façon de vérifier l'email est disons ... on ne peut plus simpliste.
Ton code accepteras n'importe quoi, par exemple : 098à.è-("-éçetç-"eètàd_à@@@@@dsqnndsf)

pas top, surtout quand l'on voit ce que tu en fais après

Une méthode on ne peut plus simple et fiable :
filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)


Second point :
La sécurité de ta base de données => zéro
Renseigne toi sur les fonctions mysql_real_escape_string() ou mieux, PDO


Cordialement,

Kohntark -
mardi 19 juillet 2011 à 20:50:37 | Re : erreur de syntaxe quand je veux obliger un utilisateur a mettre un @ et un . dans un champ email

cod57

bonsoir
ton code n'est pas efficace
tu devrais utiliser une fonction de contrôle
avec une regex
a++


Code PHP :
<?php 
//http://dev.obliquid.com/manual/snip_email.html
/** Checks is the provided email address is formally valid
 *  @param string $email email address to be checked
 *  @return true if the email is valid, false otherwise
 */
function checkEmail($email) {
  $regexp="/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i";
  if ( !preg_match($regexp, $email) ) {
       return false;
  }
  return true;
}


$err=array();
$email=null;

if(isset($_POST['email'])){
$email=$_POST['email']; 
$point=strpos($email,"."); 
$aroba=strpos($email,"@"); 

  if(empty($_POST['email'])){
  $err[]="Il y a un champs vide remplissez le";
  }
  
  elseif(empty($point)){
  $err[]="Votre email doit comporter un <b>point<b>";
  }
  
  elseif(empty($aroba)){
  $err[]="Votre email doit comporter un <b>'@'<b>";
  } 
    
  elseif(!checkEmail($email)){  //false
  $err[]="Votre email est au mauvais format";
  }
  
  
  else{
  }

}else{
//rien de poste
}

////////////////////////////////////////////////////////////////////////////////
/*phase 2*/

if(count($err)>0){ 
  /*affichage des erreurs*/
  foreach($err as $er => $e){
  echo $e.'<br />';
  }

}else{ 
// connexion à la base 
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error()); 
// sélection de la base 
mysql_select_db('test',$db) or die('Erreur de selection '.mysql_error()); 
// on écrit la requête sql 
//$sql = "INSERT INTO compte(id,email) VALUES('','$email')"; 
// on insère les informations du formulaire dans la table 
//mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
// on affiche le résultat pour le visiteur 
echo 'Vos infos on été ajoutées.'; 
mysql_close(); // on ferme la connexion 
} 
?>
<form action="" method="post">
<input type="text" name="email" value="<?php echo $email;?>">
<input type="submit" value="test">
</form> 


Bonne programmation !
mardi 19 juillet 2011 à 20:55:04 | Re : erreur de syntaxe quand je veux obliger un utilisateur a mettre un @ et un . dans un champ email

cod57

de plus comme le precise kohntark
la securité est pas présente
comme ça sa serait mieux

$sql = "INSERT INTO compte(id,email) VALUES('','$email')";
// on insère les informations du formulaire dans la table
$email=mysql_real_escape_string($email);
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';
mysql_close(); // on ferme la connexion

Bonne programmation !
mardi 19 juillet 2011 à 21:26:44 | Re : erreur de syntaxe quand je veux obliger un utilisateur a mettre un @ et un . dans un champ email

kohntark

Membre Club
Salut Cod57,

Je trouve cela très lourd pour un simple contrôle d'email, sans compter que la véritable expression régulière qui valide la conformité d'un mail est bien plus longue que celle de ta fonction. Cela étant je ne suis pas certain que filter_var() soit vraiment conforme à la norme non plus.
... d'ailleurs entre ce qu'autorise la norme et les adresses couramment rencontrées il y a un gouffre.

Tout ça devrait se résumer à :
Code PHP :
<?php
if (!isset($_POST['email']) || false === $email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    echo 'Email invalide';
} else {
    echo 'ok';
    $sql = "INSERT INTO compte(id,email) VALUES('','$email')";
    // ... traitement SQL
}
?>


Inutile selon moi de s'embarrasser avec des "vous avez oublié un point".
Un petit JS qui vérifie juste que le champ n'est pas vide est bien suffisant ... ou alors on vérifie le format directement côté client (en plus du contrôle impératif côté serveur)

Cordialement,

Kohntark -
mardi 19 juillet 2011 à 21:35:42 | Re : erreur de syntaxe quand je veux obliger un utilisateur a mettre un @ et un . dans un champ email

cod57

@Kohntark
en effet il faut php 5.3 pour filter_var mais bon ...
vu le niveau de son script je veux rester basique
et qu'il comprenne un peu la façon de faire surtout les tests
en effet cette regex ne contrôle pas tout d'ailleurs
elle pas de moi c'est la première que j'ai trouvé sur google j'ai fait un snippet plus long que j'ai déjà posté sur phpcs
qu'il aurait sans doute mal digéré

a++

Bonne programmation !
mardi 19 juillet 2011 à 21:51:00 | Re : erreur de syntaxe quand je veux obliger un utilisateur a mettre un @ et un . dans un champ email

kohntark

Membre Club
@Cod57
"en effet il faut php 5.3 pour filter_var mais bon ... "
D'après la doc c'est 5.2.0 J'ose espérer que ça couvre la grande majorité des serveurs.

"vu le niveau de son script je veux rester basique"
Rester basique en proposant une regex !!!
Tu n'y vas pas un peu fort là
Au moins avec filter_var on ne se prend pas la tête c'est on ne peut plus simple.
Mais sur le fond tu as tout à fait raison.

Bonne soirée à toi,

Kohntark -
mercredi 20 juillet 2011 à 06:28:59 | Re : erreur de syntaxe quand je veux obliger un utilisateur a mettre un @ et un . dans un champ email

gb66

Jmattendais pas vraiment a recevoir des postes merci jai wamp server avec php 5.3.4

jesseye de comprendre se que vous me dite jai esseyer sa je ne sais pas si ses complet et securitaire mais jai une erreur a la ligne 2mais si jai un mot de passe a root pk se ne serais pas securitaire et quelqun peut t'il recuperer les donner de ma base donner ou traffiquer les .php ou les .html

<?php
if(!isset($_POST['email'])) || false === $email = filter_var($POST['email'], FILTER_VALIDATE_EMAIL))
{echo'email invalide'; }
else{ echo'ok'; $email=$_POST['email'];

$point=strpos($email,".");
$aroba=strpos($email,"@");
else $email="";
if($point=='')
{echo "Votre email doit comporter un <b>point<b>";}
elseif($aroba=='')
{echo "Votre email doit comporter un <b>'@'<b>";}

if(empty($email))

{
echo "Il y a un champs vide remplissez le";
}

else
{
// connexion à la base
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base

mysql_select_db('w4e',$db) or die('Erreur de selection '.mysql_error());
// on écrit la requête sql
$sql = "INSERT INTO compte(id,email) VALUES('','$email')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';

mysql_close(); // on ferme la connexion
}
?>
parse error:syntax eroor,unexpected T_BOOLEAN_OR in ...on line 2
mercredi 20 juillet 2011 à 09:17:57 | Re : erreur de syntaxe quand je veux obliger un utilisateur a mettre un @ et un . dans un champ email

kohntark

Membre Club
(re) 1 petite chose qui facilite ... heu ... les choses :
- utilise la balise code, c'est l'icône qu'il y a dans la zone de saisie lorsque tu écris ton message, suffit de choisir "PHP". Ca permet la coloration syntaxique, ce qui permet par exemple de s'apercevoir facilement que l'on a une erreur de syntaxe.

parse error:syntax eroor,unexpected T_BOOLEAN_OR in ...on line 2


=> erreur de syntaxe : opérateur binaire OU inattendu à la ligne 2
=> tu as une parenthèse fermante en trop, ce qui fait que le parser PHP s'attend à trouver une accolade ouvrante, ou rien.


mais si jai un mot de passe a root pk se ne serais pas securitaire et quelqun peut t'il recuperer les donner de ma base donner ou traffiquer les .php ou les .html


(re)=>

Renseigne toi sur les fonctions mysql_real_escape_string() ou mieux, PDO


Je ne peux pas lire la doc à ta place. Elle expliquera mieux que n'importe qui ici les problèmes de sécurité auxquels tu t'exposes.
Je te (re)conseille donc de la lire, et de ne pas hésiter si il y a quelque chose que tu ne comprends pas.
S'il en était besoin :
http://fr2.php.net/manual/en/function.mysql-real-escape-string.php
http://fr2.php.net/manual/en/security.database.sql-injection.php
+ google and co
Même si dans ta requête INSERT il n'est peut être pas possible d'effectuer une injection (quoique) il convient de prendre l'habitude systématique de traiter les données provenant de l'utilisateur, ne serait ce que pour éviter les plantages.
Si j'entre "toto'@machin.truc" dans le champ email que ce passe t il ?


Une autre chose à ne jamais faire :
Code PHP :
or die('Erreur de connexion '.mysql_error()); 

Avec ça tu peux donner des informations importantes sur ta base de données.
Si jamais une requête de connexion ou une requête SQL plante l'utilisateur n'a pas à en connaitre la raison, c'est un dysfonctionnement qui te regarde :
utilisateur => "désolé, un plantage à eu lieu"
toi => envoi d'un mail, log de l'erreur, ... avec l'intitulé exact et d'autres infos de débogage.

Par ailleurs tu as encore d'autres erreurs de syntaxe ... celles que j'expliquais dans mon premier post.

Je reformule pour être plus clair :

Sans accolades seule la ligne qui suit l'instruction if ou else est prise en compte.
Tu as plus d'une ligne dans le if() => tu dois mettre des accolades


J'entends par "une ligne" 1 instruction :

Code PHP :
<?php
if($machin)
  // la ligne suivante contient 2 instructions, seule la première dépend 
  // du if(), le else générera une erreur
  echo 'truc';echo 'trucmuche';
else // 1 else alors que l'on est plus dans une condition if() => plantage
  echo 'bidule';
?>


Prends donc l'habitude de mettre des accolades partout et indente ton code, tu éviteras les soucis.

Cordialement,

Kohntark -

1 2 3 4

Cette discussion est classée dans : mysql, erreur, sql, email, echo


Répondre à ce message

Sujets en rapport avec ce message

Erreur inexpliquée avec echo suite lecture donnée serveur sql [ par sebing ] Bonsoir, J'ai une erreur que je ne peux expliquer, en effet je me sert du même script pour un autre site et tout fonctionne bien. Ma page est sert de Ma varaible ne passe pas.... [ par pasbonte ] Bonjour Grace à phpanonyme, j'ai avancé mais maintenant j'ai un autre problème: ma variable NOM ne passe pas.... voici les deux form: [code=php] <?php php mysql tableau probleme [ par toto6311 ] Bonjour tout le monde , j'ai un petit soucis , pour afficher ma base membre dans un tableau sur mon site . Voila les champs de ma table $id' ,'$emai probleme formuliare [ par jinin ] Bonjours à Tous, j'ai fait un script php pour un formulaire d'inscription dans dans ma base données avec envoie d'email <div align="center" style="w probleme mysql ou php [ par gaucyril ] Bonjour à tous,J'ai donc un petit problème. J'ai le code suivant :$sql = 'SELECT * FROM query WHERE valid="1"';$req = mysql_query($sql) or die('Erreur Figer et colorer un enregistrement de textarea [ par Piegan ] Bonjour à Toutes et à Tous Voilà mon problème je désire figer et colorer l'enregistrement d'un textarea, d'une catégorie d'utilisateur, en haut d'un Afficher données de 2 tables dans un tableau [ par Chewba ] Bonjour, Je cherche comment je peux faire pour afficher les données provenant de 2 tables différentes dans un tableau.J'ai une table Roster_members et contact via formailre mail (ne passe pas) [ par speedylol ] bonjour j'ai un petit soucis avec mon formailare de contact pat mail , il ne passe pas je reviens toujours a la case réessayez seriez vous m'aider svp prob pagination [ par soussan ] je suis débutante en php et j'ai un prob avec code pagination que j'ai trouvé sur le web,qlq1 peut m'aider à trouver l'erreur et merci:$server = "loca prob pagination [ par soussan ] sltj'ai un rpob de pagination ; pour la premiere page tt marche bien mais pour la deuxième je suis bloqué ca donne pas la suite des enregistrement voi


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales