8791 sujets

Développement web côté serveur, CMS

Salut...

Je suis en train de faire un site, ou se trouve un formulaire d'inscription. Dans le concrêt, tous mes champs sont ok sauf un , celui ou l'utilisateur doit rentrer 8 chiffres.

J'ai beau me doccumenter, je calle grave, plus moyen d'avancer... En fait, dans ce champ, actuellement, je peux rentrer n'importe quoi.. Moi je souhaiterais uniquement des chiffres de 0 à 9 , avec un message d'erreur qui stipule, si l'entrée n'est pas correcte, que à cet endroit il ne peut y voir que des chiffres...

Mais francheement, galère... Alors bon, y'aurait pas quel'qu'un pouvant me rencarder un tuto qui explique cela de manière simplifiée? Histoire d'y voir plus clair , je colle mon code ci dessous, pour que vous ayez plus de facilités à comprendre mon stress...

Enfin soit, merci d'avance pour les éventuelles pistes..

(La ligne en question est inami )
<?php require_once('Connections/users.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

// *** Redirect if username exists
$MM_flag="MM_insert";
if (isset($_POST[$MM_flag])) {
  $MM_dupKeyRedirect="enregistrement.php";
  $loginUsername = $_POST['email'];
  $LoginRS__query = sprintf("SELECT email FROM comptes_utilisateurs WHERE email=%s", GetSQLValueString($loginUsername, "text"));
  mysql_select_db($database_users, $users);
  $LoginRS=mysql_query($LoginRS__query, $users) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);

  //if there is a row in the database, the username was found - can not add the requested username
  if($loginFoundUser){
    $MM_qsChar = "?";
    //append the username to the redirect page
    if (substr_count($MM_dupKeyRedirect,"?") >=1) $MM_qsChar = "&";
    $MM_dupKeyRedirect = $MM_dupKeyRedirect . $MM_qsChar ."requsername=".$loginUsername;
    header ("Location: $MM_dupKeyRedirect");
    exit;
  }
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO comptes_utilisateurs (id, email, password, nom, prenom, inami, domicile) VALUES (%s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['id'], "int"),
                       GetSQLValueString($_POST['email'], "text"),
                       GetSQLValueString($_POST['password'], "text"),
                       GetSQLValueString($_POST['nom'], "text"),
                       GetSQLValueString($_POST['prenom'], "text"),
                       GetSQLValueString($_POST['inami'], "text"),
                       GetSQLValueString($_POST['domicile'], "text"));
  mysql_select_db($database_users, $users);
  $Result1 = mysql_query($insertSQL, $users) or die(mysql_error());

  $insertGoTo = "login.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_users, $users);
$query_rsusers = "SELECT id, email, password, nom, prenom, domicile, confirme, inami FROM comptes_utilisateurs";
$rsusers = mysql_query($query_rsusers, $users) or die(mysql_error());
$row_rsusers = mysql_fetch_assoc($rsusers);
$totalRows_rsusers = mysql_num_rows($rsusers);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Inscription</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body,td,th {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 12px;
	color: #006699;
}
-->
</style></head>

<body>
<form method="post" name="form1" action="<?php echo $row_rsusers['inami']; ?>">
  <div align="center">
    <?php if (isset($_GET['requsername'])){?>
    Cette adresse mail existe déjà dans notre base de données </span>
    <?php }?>
  </div>
  <table align="center">
    <tr valign="baseline">
      <td nowrap align="right">Email:</td>
      <td><input type="text" name="email" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Password:</td>
      <td><input type="password" name="password" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Nom:</td>
      <td><input type="text" name="nom" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Prenom:</td>
      <td><input type="text" name="prenom" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">inami</td>
      <td><input type="text" name="inami" value="" size="8"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Domicile:</td>
      <td><input type="text" name="domicile" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td><input type="submit" value="Insérer l'enregistrement"></td>
    </tr>
  </table>
  <input type="hidden" name="id" value="">
  <input type="hidden" name="MM_insert" value="form1">
</form>
<p>&nbsp;</p>
</body>
</html>
<?php
mysql_free_result($rsusers);
?>

Modifié par FranZz (02 Nov 2007 - 11:24)
Salut FranZz,

tu pourrais essayer ça :
if(!preg_match('`^[0-9]{8}$`', $_POST['inami'])) {
	$erreur = "Ce champ doit contenir 8 chiffres !";
}

A+

PS: pourquoi avoir posté dans "Encodage et Internationalisation" Smiley langue ?
Modifié par Heyoan (02 Nov 2007 - 10:48)
Hello Heyoan, bon après plusieurs tentatives, j'ai un peu de mal à trouver l'endroit ou ton bout de code doit être placé... J'appends en solo depuis peu, et mes conaissances ne sont pas encore approfondies...

J pensais le placer la
<?php require_once('Connections/users.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

// *** Redirect if username exists
$MM_flag="MM_insert";
if (isset($_POST[$MM_flag])) {
  $MM_dupKeyRedirect="enregistrement.php";
  $loginUsername = $_POST['email'];
  $LoginRS__query = sprintf("SELECT email FROM comptes_utilisateurs WHERE email=%s", GetSQLValueString($loginUsername, "text"));
  mysql_select_db($database_users, $users);
  $LoginRS=mysql_query($LoginRS__query, $users) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);

  //if there is a row in the database, the username was found - can not add the requested username
  if($loginFoundUser){
    $MM_qsChar = "?";
    //append the username to the redirect page
    if (substr_count($MM_dupKeyRedirect,"?") >=1) $MM_qsChar = "&";
    $MM_dupKeyRedirect = $MM_dupKeyRedirect . $MM_qsChar ."requsername=".$loginUsername;
    header ("Location: $MM_dupKeyRedirect");
    exit;
  }
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO comptes_utilisateurs (id, email, password, nom, prenom, inami, domicile) VALUES (%s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['id'], "int"),
                       GetSQLValueString($_POST['email'], "text"),
                       GetSQLValueString($_POST['password'], "text"),
                       GetSQLValueString($_POST['nom'], "text"),
                       GetSQLValueString($_POST['prenom'], "text"),
                       GetSQLValueString($_POST['inami'], "text"),
                       GetSQLValueString($_POST['domicile'], "text"));
  mysql_select_db($database_users, $users);
  $Result1 = mysql_query($insertSQL, $users) or die(mysql_error());

  $insertGoTo = "login.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_users, $users);
$query_rsusers = "SELECT id, email, password, nom, prenom, domicile, confirme, inami FROM comptes_utilisateurs";
$rsusers = mysql_query($query_rsusers, $users) or die(mysql_error());
$row_rsusers = mysql_fetch_assoc($rsusers);
$totalRows_rsusers = mysql_num_rows($rsusers);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Inscription</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body,td,th {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 12px;
	color: #006699;
}
-->
</style></head>

<body>
<form method="post" name="form1" action="<?php echo $row_rsusers['inami']; ?>">
  <div align="center">
    <?php if (isset($_GET['requsername'])){?>
    Cette adresse mail existe déjà dans notre base de données </span>
    <?php }?>
  </div>
  <table align="center">
    <tr valign="baseline">
      <td nowrap align="right">Email:</td>
      <td><input type="text" name="email" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Password:</td>
      <td><input type="password" name="password" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Nom:</td>
      <td><input type="text" name="nom" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Prenom:</td>
      <td><input type="text" name="prenom" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">inami</td>
      <td><input type="text" name="inami" value="" size="32"></td>

if(!preg_match('`^[0-9]{8}$`', $_POST['inami'])) {

	$erreur = "Ce champ doit contenir 8 chiffres !";

}                                                                // Je l'ai collé ci dessus.........
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Domicile:</td>
      <td><input type="text" name="domicile" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td><input type="submit" value="Insérer l'enregistrement"></td>
    </tr>
  </table>
  <input type="hidden" name="id" value="">
  <input type="hidden" name="MM_insert" value="form1">
</form>
<p>&nbsp;</p>
</body>
</html>
<?php
mysql_free_result($rsusers);
?>

Modifié par FranZz (05 Nov 2007 - 11:41)
Salut,

difficile de t'aider car visiblement tu utilises un script tout fait (avec les MM_ on dirait du Dreamweaver Smiley rolleyes ) et je ne vois aucun pavé de contrôle des champs saisis Smiley confus ...

Tu trouveras sûrement plus d'infos sur la validation du formulaire dans le logiciel en question ou sur le site d'où provient le script...

Cela dit, je ne suis pas persuadé que ce soit la meilleure des façons de s'initier à PHP Smiley langue ! Ce serait sans doute plus simple de repartir du début , par exemple en allant sur phpdebutant.org.

A+ Smiley smile

PS : le code serait nettement plus lisible s'il était entre les balises [ code] et [ \code] Smiley cligne
En fait, maîtriser le php est un objectif que je me suis fixé, c'est clair...

Mais bon, certaines contraintes de temps étant là, je travaille effectivement avec DMX pour m'aider dans le code..;

Toutes mes pages fonctionnent, c'est Nickel, il me reste juste à mettre cette petite condition au bon endroit.. En fait je crée un forulaire avec un enregistrement multiple, une page login, et puis des autres pages avec des récupérations de données dynamiques... Tout est ok, juste ce ptit truc en fait.........

Mais Bon........

J'ai plus énormément de temps pour tout reprendre à zéro, malgré la motivation.....

Smiley biggol Smiley biggol Smiley biggol Smiley biggol Smiley biggol Smiley biggol Smiley biggol Smiley biggol