Formulaire de validation
Bonjour, je suis un très ancien membres du site apprendr-php, mais j'ai toujours hésiter de m'inscrir et participé dans les forums...
Bon voila mon premier poste et je suis désolé qu'il soit une demande d'aide à la place d'une participation d'aider les autres .
Voila j'explique mon problèm: J'essaye de fair un formulaire de commande d'un nom de domaine, bon en détaille le formulaire a pour but de fair entré un nom de domaine et le vérifié si il est disponible, le visiteur continu sa commande à l'étape suivante, mais si le nom de domaine est non disponible il reprend le meme page pour essayé à nouveau, voila tous.
Je vous fourni mon code de la page ou j'ai eux ce problèm:
Commande Etape 2
Configuration des produits Entrer votre nom de domaine* .com Cliquez pour continuer Should be Empty: ============
Et merci d'avance, et une dérnière information, je suis pas un pro dans le php. Bonne journée à vous tous ;)
Réponses apportées à cette discussion
Salut skyneto,
j'ai eu beau relire, je n'ai pas trouvé ta question ni la nature exacte de ton problème.
Par ailleurs, je te signale que dans le haut du formulaire, il y a un petit logo « **** » et en cliquant dessus, ça ouvre un popup pour l'insertion de code, tu sélectionnes le langage, ça insèrera ton code en conservant la mise en forme et en ajoutant une coloration syntaxique.
Je te suggère de poster à nouveau ton code bien mis en forme (utilise le bouton [Prévisualiser] avant le bouton [Soumettre] en ajoutant ta question.
Malgré tout, je te signale qu'un tableau html ne peut pas être inclus dans une balise . Conseil, crée des maquettes de ce que tu veux obtenir et veille à ce que le code des maquettes soit valide avant d'intégrer ça dans ton PHP, tu gagneras pas mal de temps.
Rebonjour, et merci pour votre réponse, enfaite avant j'ai essayé la fenetre popup du code mais elle marche pas quand tu tape code dans la légende elle me donne une erreur, mais j'ai réussi à l'utiliser sous chrome :).
Ma question est quand tu tape un nom de domaine après la vérification la fonctione
la fonction
function showDomainResult($domain,$server,$findText){ if (checkDomain($domain,$server,$findText)){ echo "<tr><td>Félicitations ! ".$domain." est disponible !</td></tr>"; $statut = 4; } else{ echo "<tr><td>Désolé ! ".$domain." a déjà été enregistré !</td></tr>"; $statut = 5; } }
retourne toujours 5 qui signifie que le nom de domaine est non disponible meme si il est disponible. voila j'ai essayé tous plus que 3 jours et toujours rien :s.
Merci pour votre conseil à propos de la maquette ^^.
Mes sincères salutations et bonne journée.
<?phpsession_start();global $statut;//===========================Fonction du nom de domaine================================ function checkDomain($domain,$server,$findText){ // Open a socket connection to the whois server $con = fsockopen($server, 43); if (!$con) return false; // Send the requested doman name fputs($con, $domain."\r\n"); // Read and store the server response $response = ' :'; while(!feof($con)) { $response .= fgets($con,128); } // Close the connection fclose($con); // Check the response stream whether the domain is available if (strpos($response, $findText)){ return true; } else { return false; } } function showDomainResult($domain,$server,$findText){ if (checkDomain($domain,$server,$findText)){ echo "<tr><td>Félicitations ! ".$domain." est disponible !</td></tr>"; $statut = 4; } else{ echo "<tr><td>Désolé ! ".$domain." a déjà été enregistré !</td></tr>"; $statut = 5; } } /*function showDomainResult1($domain,$server,$findText){ if (checkDomain($domain,$server,$findText)){ return $statut = 4; } else{ return $statut = 5; } }*///=======================================================================================if(!empty($statut)){ switch($statut){ case 4:{ //header('Location: ../page_3/index3.php'); }break; case 5:{ //header('Location: 1/page_2/index2_nd.php'); }break; }}?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Commande Etape 2</title><meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /><meta name="HandheldFriendly" content="true" /> <body><form class="jotform-form" action="index2_nd.php" method="post" name="form_2022530170" id="2022530170" accept-charset="utf-8"> <input type="hidden" name="formID" value="2022530170" /> <div class="form-all"> <ul class="form-section"> <li id="id_1" class="form-input-wide"> <div class="form-header-group"> <h2 id="header_1" class="form-header"> Configuration des produits </h2> </div> </li> <li class="form-line" id="id_3"> <label class="form-label-left" id="label_3" for="input_3"> Entrer votre nom de domaine<span class="form-required">*</span> </label> <div id="id_3" class="form-input"> <input type="text" class="form-textbox validate[required]" id="input_3" name="domainname" size="50" /> <input type="checkbox" name="com" checked/>.com <br/> <h4><?php // The form was submitted if (isset($_POST['submitBtn'])){ $domainbase = (isset($_POST['domainname'])) ? $_POST['domainname'] : ''; $d_com = (isset($_POST['com'])) ? 'com' : ''; // Check domains only if the base name is big enough if (strlen($domainbase)>2){ echo '<table>'; if ($d_com != '') showDomainResult($domainbase.".com",'whois.crsnic.net','No match for'); echo '</table>'; } }?> </h4> </div> </li> <li class="form-line" id="id_2"> <div id="id_2" class="form-input-wide"> <div style="margin-left:170px" class="form-buttons-wrapper"> <button id="input_2" type="submit" name="submitBtn" class="form-submit-button"> Cliquez pour continuer </button> </div> </div> </li> <li style="display:none"> Should be Empty: <input type="text" name="website" value="" /> </li> </ul> </div> <input type="hidden" id="simple_spc" name="simple_spc" value="2022530170" /></form><pre><?php//print_r($_SESSION);print_r($_POST);echo $statut;?>============<?phpprint_r(showDomainResult($domain,$server,$findText,&$statut));?></body></html>
Salut,
il faudrait modifier un tout petit peu la fonction checkDomain de façons à préciser la nature exacte du retour. Si elle retourne false, ça peut vouloir dire que le domaine n'est pas disponible, mais ça pourrait aussi vouloir dire que la connexion au socket a échoué, comment le savoir : aussi, je te propose de la modifier comme ceci :
<?php
/**
* Vérification de la disponibilité d'un nom de domaine.
*
* Le retour sera un entier :
* - 1 : la connexion au socket a échoué;
* - 2 : le nom de domaine n'est pas disponible;
* - 3 : le nom de domaine est disponible.
*
* @param String $domain Nom de domaine recherché
* @param String $server Chemin du serveur
* @param String $findText ...?
* @return Int Entier, valeur 1, 2 ou 3
*/
function checkDomain($domain,$server,$findText)
{
// Open a socket connection to the whois server
$con = fsockopen($server, 43);
if (!$con)
{
$retour = 1;
}
// Send the requested doman name
fputs($con, $domain."\r\n");
// Read and store the server response
$response = ' :';
while(!feof($con))
{
$response .= fgets($con,128);
}
// Close the connection
fclose($con);
// Check the response stream whether the domain is available
if (strpos($response, $findText))
{
$retour = 3;
}
else
{
$retour = 2;
}
return $retour;
}
Comme tu peux voir, au lieu de retourner un booléen, elle retourne 1, 2 ou 3. J'ai ajouté les commentaires en début de fonction, lis-les attentivement.
Modifie en conséquence le traitement de retour de cette fonction dans l'autre et teste à nouveau.
Salut,
J'ai fait un changement dans le code pour utiliser les retours de la fonction voila le changement :
if(!empty(checkDomain($domain,$server,$findText))){ if(checkDomain($domain,$server,$findText) == 2){ //header('Location: ../page_3/index3.php'); echo "le nom de domaine n'est pas disponible"; } else(checkDomain($domain,$server,$findText) == 3){ //header('Location: 1/page_2/index2_nd.php'); echo "le nom de domaine est disponible."; }}
mais il me donne erreur et me redirige vers index.php comment cela se fait je sais pas il y a même pas index.php dans le code.
Mes sincères salutations et bonne journée.
Salut Skyneto,
ok pour ta modification. Tu aurais pu rajouter une condition : si la valeur est «1», « Le service est temporairement indisponible, essayez ultérieurement » par exemple.
Ceci dit, la redirection n'est même pas normale puisque tes « header('Location') » sont commentés et donc ne sont pas exécutés. Je crois qu'il va falloir que tu essayes d'isoler le point à problème. J'ignore quel éditeur tu utilises, s'il y a un système de débogage pas-à-pas, ce serait une riche idée de l'utiliser. Sinon, il faut passer par la méthode « à l'ancienne » à coup de var_dump().
Petite règle de base pour débusquer la source d'un bug ou, comment isoler un bug. Tu sais que ton code s'exécute correctement jusqu'à un certain point de ton code. Tu sais également qu'à un autre point plus loin, le résultat n'est pas conforme à tes attentes. Il y a donc une valeur qui n'est pas bonne dans une des variables. en faisant des petits bouts de code du genre :
débogage à l'ancienne
<?php//..../** * On vérifie ce que vaut réellement une variable à ce point du code... */echo('<pre>' . "\n");var_dump($ma_variable_a_verifier);echo('</pre>' . "\n");//...// etc..//...
ça va afficher à l'écran ce qui se passe réellement. éventuellement tu peux rajouter un « die(); » juste après pour éviter une redirection intempestive. Si la valeur est bonne, tu décales ton bout de code au point suivant.
Tu vas forcément tomber à un moment donné sur une valeur complètement fantaisiste ou incohérente qui explique le bug : tu pourras alors déterminer d'où vient l'erreur et la corriger.
This is one of the most incredibleread in a very long time. The amount of information in here is stunning, like you practically wrote the book on the subject. discount ugg boots