Associer une image à un bouton radio

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 : Associer une image à un bouton radio

Re: Associer une image à un bouton radio

par xTG » 22 mars 2014, 19:43

Le principe est correct. :)
Mais je gérerai plutôt une erreur générique à la place de "vous êtes déjà inscrit" pour éviter de dévoiler à des robots que cet email est utilisé.

Re: Associer une image à un bouton radio

par franki06 » 22 mars 2014, 13:49

bonjour
je viens de tomber sur ce sujet qui m'a beaucoup interessé, meme si il est un peu ancien, et j'aurai une question a propos de comment est géré la confirmation ou pas de l'inscription:

dans la table, il y a une colonne "confirm" avec 0 ou 1; si c'est cliqué, on va chercher ds la table le code de la personne, on verifie que c'est le bon et si c'est la cas, on insere 1 dans la colonne "confirm" et donc il y a affichage de la suite pr la personne.
et ainsi, si la personne reclique sur le lien, il peut y avoir un message "vs etes deja inscrit" puisque confirm est a 1; et si pas cliqué il y a un message d'erreur qui s'affiche car confirm est a 0

je vois ca comme cela, mais mon raisonnement est il le bon, est ce bien géré comme cela?

merci

Re: Associer une image à un bouton radio

par nicolas17550 » 16 mai 2011, 17:49

J'ai mis une alerte mais j'ai terminé par exit();
comme tu me l'a demandé :D

Re: Associer une image à un bouton radio

par AB » 15 mai 2011, 21:02

Quest-ce que tu veux dire par "une alerte" ?

Dans mon exemple on arrête le script et on affiche un message "Vous devez vous connecter pour voir cette page".

Dans ce message tu peut tout aussi bien mettre un lien vers la page de connexion
exit('Vous devez <a href="page_connexion.php">vous connecter ici</a> pour voir cette page');
Ou encore diriger vers une page où sera afficher ce message
if (!isset($_SESSION['pseudo'])) //Le code pour verifier qu'une session existe
{
header(Location: 'page_message_connexion.php');        
exit;
}
après Location tu pourrais mettre à la place la page d'index ou encore la page de connexion mais l'important est que le script se termine par "exit;" pour être certain de ne pas continuer le script sur la page en cours.

Re: Associer une image à un bouton radio

par nicolas17550 » 15 mai 2011, 18:13

Et comment on fait pour que le message devienne une alerte en php ?

Re: Associer une image à un bouton radio

par AB » 15 mai 2011, 17:42

ATTENTION DANGER :
session_start(); //On ouvre la session pour pouvoir verifier si le membre est connecté
require("conf.php3"); //Commme d'ab

if (!isset($_SESSION['pseudo'])) //Le code pour verifier qu'une session existe
{
        echo "<script>alert(\"Vous devez vous connecter pour voir cette page\")</script>"; //Si non, on arrete le script et on affiche un message
        echo '<script language="Javascript">document.location.replace("index.php");</script>';

}
//...
Pas bon du tout cette façon de faire car il est très facile de désactiver javascript. Et dans ce cas le code javascript ne sera pas interprété et ta page n'est pas protégée. C'est une faille majeure.

Encore une fois, il faut protéger ta page avec php
if (!isset($_SESSION['pseudo'])) //Le code pour verifier qu'une session existe
{
        exit("Vous devez vous connecter pour voir cette page"); //Si non, on stop le script et on affiche un message
}

Re: Associer une image à un bouton radio

par AB » 15 mai 2011, 01:23

Oui je t'avais pas répondu pour l'interclassement car cela ne concerne que les lettres (pas les nombres).

Re: Associer une image à un bouton radio

par nicolas17550 » 15 mai 2011, 00:26

Merci beaucoup ca marche :D

Re: Associer une image à un bouton radio

par AB » 15 mai 2011, 00:08

moogli a déjà répondu.
Mets smallint comme type et par défaut not null si ce champ doit toujours être renseigné.

Re: Associer une image à un bouton radio

par nicolas17550 » 14 mai 2011, 23:49

Merci =)
Dans ma base de donnée je met "sexe" en nom de la colonne, mais le type de la colonne (text, varchar, ou enum ?) ainsi que l'interclassement, not null ou null etc....

Re: Associer une image à un bouton radio

par AB » 14 mai 2011, 23:36

Ben teste et tu verras bien le résultat dans ta bdd. Normalement si tu coche masculin tu devrais avoir 1 dans le champ sexe.

Ensuite
<?php
$sql = connect_sql();
$pseudo_membre = $_SESSION['pseudo'];
$requete = mysql_query("SELECT * FROM pdf_membre WHERE `pseudo`='$pseudo_membre'");
$result = mysql_fetch_array ($requete);

$id = $result['id'];
$pseudo = $result['pseudo'];
$mail = $result['mail'];
$born = $result['born'];
$nom = $result['nom'];
$prenom = $result['prenom'];
$pays = $result['pays'];
$sexe = $result['sexe'];

$adresse_image =  $sexe ==1 ? repertoire_image/image_sexe_masculin.jpg : repertoire_image/image_sexe_feminin.jpg;
/* On peut recuperer plus d'info si besoin */

?>
<?php include('protect/accueil.html'); ?>

<img src="<?php echo $adresse_image ?>"/>

Re: Associer une image à un bouton radio

par nicolas17550 » 14 mai 2011, 22:54

Oui c'est plus simple mais tu ne m'a pas expliqué comment faire pour associé deux images : Image et Image à deux boutons radios pour valeur $sexe et comment les affichés dans la page membre.php
Et dans la base de donnée comment je pourrais faire ??

Merci

Re: Associer une image à un bouton radio

par AB » 14 mai 2011, 22:25

Merci de ta réponse.
Et dans la page inscription.php, il y a des choses a rajouter ?
$verification = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE pseudo='$pseudo' OR mail='$mail'") or die (mysql_error());
                $donnees = mysql_fetch_array($verification)or die (mysql_error());

                if($donnees['COUNT(*)'] >= 1)
à remplacer par
$verification = mysql_query("SELECT COUNT(*) as nb FROM pdf_membre WHERE pseudo='$pseudo' OR mail='$mail'") or die (mysql_error());
                $donnees = mysql_fetch_array($verification)or die (mysql_error());

                if($donnees['nb'] >= 1)
L'affichage des erreurs est un peu laborieuse avec javascript
echo "<script>alert(\"Votre pseudo est déjà pris !\")</script>";
                        echo '<script language="Javascript">document.location.replace("javascript&#058;history.back(1)");</script>';
avec cette méthode tu ne pourras afficher qu'une erreur à la fois. Il serait plus optimisé d'enregistrer les erreurs dans un tableau php puis de faire afficher ce tableau en php.

Du genre :
<?php

session_start(); //On demarre une session parce que j'ai envi ^^
require("conf.php3"); //On insert le fichier qui contient les informations

if (isset($_POST['envoyer']))
{
	$chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
	$confirm = str_shuffle($chaine); //On créé le code de confirmation
	
    $mail = htmlentities($_POST['mail']);
	$pseudo = htmlentities($_POST['pseudo']); //On recupère les infos
	$mdp = htmlentities($_POST['mdp']);
	$verif_mdp = htmlentities($_POST['verif_mdp']);
	$nom = htmlentities($_POST['nom']);
	$prenom = htmlentities($_POST['prenom']);
	$pays = htmlentities($_POST['pays']);
	$website = htmlentities($_POST['website']);
	$born = htmlentities($_POST['born']);
	$sexe = htmlentities($_POST['sexe']);
   
	/*On Fait la variable contenant le mail de confirmation*/

	$message1 = '<html><body><img src="http://www.web-astronomie.com/images/entete-mail.png"></br><br>';
	$message1 .= '<font face="Tahoma" color="#3b5998" size="2">Bonjour<b> ' . $prenom . ' ' . $nom . ' </b>et bienvenue sur<b> ' .$nom_site. '</b></br>';
	$message1 .= 'Toute l\'équipe de Web Astronomie vous remercie de votre inscription.<br><br>';
	$message1 .= 'Vos identifiants (conserver les précieusement) : <br>';
	$message1 .= '</br>';
	$message1 .= 'Votre pseudo : <b>' . $pseudo .'</b><br>';
	$message1 .= 'Votre mot de passe : <b>' . $mdp .'</b><br>';
	$message1 .= '</br>';
	$message1 .= 'Votre profil : </br>';
	$message1 .= '</br>';
	$message1 .= 'Votre mail : <b>' . $mail .'</b></br>';
	$message1 .= 'Votre nom : <b>' . $nom .'</b><br>';
	$message1 .= 'Votre prenom : <b>' . $prenom .'</b><br>';
	$message1 .= 'Votre sexe : <b>' . $sexe .'</b></br>';
	$message1 .= 'Votre pays : <b>' . $pays .'</b><br>';
	$message1 .= 'Votre date de naissance : <b>' . $born .'</b><br><br>';                                                                  
	$message1 .= 'Pour modifier vos infos, rendez-vous dans votre compte<br>';
	$message1 .= '</br>';
	$message1 .= 'Cliquez sur le lien ci-dessous pour activer votre compte :</br>';
	$message1 .= '</br>';
	$message1 .= '<a href="http://www.web-astronomie.com/confirm.php?login=' . str_replace(' ','%20',$pseudo) . '&confirm=' . $confirm . '">';
	$message1 .= 'Cliquez ici pour activer</a>';
	$message1 .= '</br></br>';
	$message1 .= 'Nous vous remercions de votre fidélité<br>';
	$message1 .= 'L\'équipe de <b>Web Astronomie</b></font></body></html>';

	$sql = connect_sql(); //On se connecte à MySQL
   
	$verification = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE pseudo='$pseudo' OR mail='$mail'") or die (mysql_error());
	$donnees = mysql_fetch_array($verification)or die (mysql_error());


	$info_formulaire = array();
	
	
	if($donnees['nb'] >= 1) //On verifie que le pseudo ou le mail n'existe pas déjà
		{
			$info_formulaire[] ="Votre pseudo est déjà pris !";
		}
		  
						
	if( empty($pseudo) || empty($mdp) || empty($verif_mdp) || empty($mail) || empty($nom) || empty($prenom) || empty($born) || empty($sexe)) //On verifie que les variables précédentes ne soient pas vide
		{
			$info_formulaire[] ="Un ou plusieurs champs ne sont pas remplis !";
		}
	
	
	if( $mdp != $verif_mdp) //On verifie que les 2 pass sont identiques
		{
			$info_formulaire[] ="Le deux mots de passe ne sont pas identiques !";		  
		}
						   
	
	if (!preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail)) //Verifie que l'email entrée n'est pas une fausse.
		{
			$info_formulaire[] ="Votre adresse email n\'est pas correcte !";
		}
		
		
	if(isset($info_formulaire) && count($info_formulaire) == 0)
	{	
		mysql_query("INSERT INTO pdf_membre VALUES ('','$pseudo', '$mdp', '$mail', '$confirm', '$nom', '$prenom', '$pays', '$born', '$website', '$sexe')");
			
		$info_formulaire[] ="Félicitation, vous êtes maintenant inscrit sur Web Astronomie ! Vous allez recevoir un email pour activer votre compte";
									   
		$entete = "MIME-Version: 1.0\r\n";
		$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
		$entete .= "From: Web Astronomie <$email_admin>\r\n";
		$entete .= "Reply-To: $email_admin\r\n";
		mail($mail,'Bienvenue sur ' .$nom_site. ' ' . $login .'' , $message1, $entete);
				 
			
		   
		mysql_close($sql); //On se deconnecte
	}
}
?>

<form action="#" method="post">
<div>
...
Homme : <input type="radio" name="sexe" value="1" />
Femme : <input type="radio" name="sexe" value="2" />
...

<input type = "submit" name = "envoyer" value = "Envoyer" />
</div>
</form>

<?php if (isset($info_formulaire) && count($info_formulaire) > 0)
{
foreach ($info_formulaire as $value) echo '<p>- '.$value.'</p>';
}
?>
Tu trouves pas ça plus simple ?

Re: Associer une image à un bouton radio

par nicolas17550 » 14 mai 2011, 21:06

Merci de ta réponse.
Et dans la page inscription.php, il y a des choses a rajouter ?

Re: Associer une image à un bouton radio

par moogli » 14 mai 2011, 20:53

Salut,

Pour le champ sql plusieurs école :
- les possibilités de SQL tendent a utiliser un domaine spécifique (mais pas implanter partout)
- mysql offre le type enum (énumération) qui pourrait convenir mais cela n'est pas standard ;)
- utiliser un booléen mais implémenté dans tous les sgbd
- utiliser un entier non signer est une solution correct dans le cas indiqué (smallint) et parfaitement suffisant il ne devra pas être null (sauf si tu sauf souhaite laisser la possibilité de ne pas répondre auquel cas null devra être la valeur par défaut. Sinon tu doit prendre le partir de que le defaut c'est 1 ou c'est 2 (c'est arbitraire et n'en change rien)

Il va falloir modifier ton formulaire car les input doivent avoir en "value" 1 ou 2

Dans le cas que tu prévu sur ton formulaire il faut que utilise champ text ou un type enum (le must c'est un domaine mais bon :/) tu ne pourra pas mettre de valeur par defaut dans ton champs et si j'ai bien vue, le premier qui met koala ou androgyne va pourrir ta table ;) avec un type enum ou un domaine qui va bien pas de soucis ;)

Pour l'interclassement et tout le reste je dirais faut mettre la même chose que pour le reste pour pas mettre le brin dans la table ;)
@+