redirection et div cliquable.

Simax150
Invité n'ayant pas de compte PHPfrance

12 avr. 2010, 10:33

Bonjour à tous ! :D
J'ai trois problèmes et étant seulement débutant (avancé) et trouvant ce forum extrêmement actif (sans doute le plus actif que j'ai vu à présent), j'ai pensé que vous pourriez m'aider.
Voilà mon code (désolé, c'est un peu long...) :
<?php 
include("includes/connexion_mysql.php");

if (isset ($_POST['pseudo']) AND isset ($_POST['mot_de_passe']) AND isset ($_POST['conf_mot_de_passe']) AND isset ($_POST['mail']))
{
	$pseudo = $_POST['pseudo'];
	$mot_de_passe = $_POST['mot_de_passe'];
	$conf_mot_de_passe = $_POST['conf_mot_de_passe'];
	$mail  = $_POST['mail'];
	
	$reg_pseudo = preg_match("#^[a-zA-Z0-9é'è_çà@+=ù*%*€,!?$-]{2,10}$#", "$pseudo");
	$reg_mot_de_passe = preg_match("#^[a-zA-Z0-9éè!?.€ -]{5,15}$#", "$mot_de_passe");
	$reg_conf_mot_de_passe = preg_match("#^".$mot_de_passe."$#", "$conf_mot_de_passe");
	$reg_mail = preg_match("#^[a-z0-9._-]{1,}@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", "$mail");
	
	echo($reg_pseudo);
	echo($reg_mot_de_passe);
	echo($reg_conf_mot_de_passe);
	echo($reg_mail);
	
	if (reg_pseudo == '1' AND reg_mot_de_passe == '1' AND reg_conf_mot_de_passe == '1' AND reg_mail == '1')
	{
	
	header('Location: inscription_validee.php');
	exit();
	
	}
	
	else
	{
	
	header("Location: inscription.php?reg_pseudo=$reg_pseudo&reg_mot_de_passe=$reg_mot_de_passe&reg_conf_mot_de_passe=$reg_conf_mot_de_passe&reg_mail=$reg_mail");
	exit();
	
	}
	
$pseudo = $_POST['pseudo'];
$mot_de_passe = $_POST['mot_de_passe'];
$conf_mot_de_passe = $_POST['conf_mot_de_passe'];
$mail = $_POST['mail'];

}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Inscription</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <link rel="stylesheet" media="screen" type="text/css" title="design" href="design.css" />
   </head>
   
   <body>
		
		<?php 
			include("includes/session.php");
			include("includes/entete.php");
	?>
	<div id=menu_et_corps>
	<?php
			include("includes/menu.php");
		
		?>
		
		<div id=corps>
		<h1 class=grostitre>Inscription</h1>
			<p>
				<form action="inscription.php" method=POST>
				
					<label for=pseudo><strong>Pseudo</strong></label><br />
					<input type=text name=pseudo id=pseudo value='<?php if (isset ($pseudo)) {echo ($pseudo);}?>' /><br /><br />
					
					<label for=mot_de_passe><strong>Mot de Passe</strong></label><br />
					<input type=password name=mot_de_passe id=mot_de_passe value='<?php if (isset ($mot_de_passe)) {echo($mot_de_passe);}?>' /><br /><br />
					
					<label for=conf_mot_de_passe><strong>Confirmation du Mot de Passe</strong></label><br />
					<input type=password name=conf_mot_de_passe id=conf_mot_de_passe value='<?php if (isset ($conf_mot_de_passe)) {echo($conf_mot_de_passe);}?>' /><br /><br />
					
					<label for=mail><strong>Adresse Mail</strong></label><br />
					<input type=text name=mail id=mail value='<?php if (isset ($mail)) {echo($mail);}?>' /><br /><br />
					
					
					<input type=submit value='OK' />
				
				</form>
			</p>
			
		</div>
	</div>
		
		<?php
			include("includes/pied.php");
		?>
		
   </body>
</html>
Il marche plutôt bien, mais la redirection me pose quelque problème:
  • lorsque les champs valent tous '1', la redirection ne fonctionne pas, je me retrouve sur "inscription.php?reg_pseudo=1&reg_mot_de_passe=1&reg_conf_mot_de_passe=1&reg_mail=1" au lieu d'être sur "inscription_validee.php"
  • lorsque certain champs sont faux, je me retrouve bien sur l'adresse indiqué, avec les variable qui valent vrai ou faux en fonction des entrés, mais le pré-remplissage ne fonctionne pas.
  • lorsque j'efface les lignes concernant la redirection, le pré remplissage à bien lieu.
et un autre petit problème moins important :
j'ai inséré ma bannière en créant un div vide et en plaçant l'image de la bannière dedans grâce au CSS. Je pensait que cela serait comme ça plus facile de changer de bannière (quoique un include aurait eu le même effet). Mais comment faire en sorte que la bannière soit cliquable et dirige vers la page d'accueil ? Y-a t-il une façon de rendre un div cliquable ?

Merci beaucoup pour vos réponses futures !

Mammouth du PHP | 672 Messages

12 avr. 2010, 11:05

Bonjour.

1.
if (reg_pseudo == '1' AND reg_mot_de_passe == '1' AND reg_conf_mot_de_passe == '1' AND reg_mail == '1')
Il faudrait peut-être mettre le $ devant tes variables #-o

2. SI tous tes champs sont remplis, tu testes leur validité.
SI ils sont valides, tu rediriges sur inscription_validee.php
SINON tu rediriges sur Location: inscription.php?etc.
Mais tu ne récupères pas les valeurs de tes champs (en fait, tu les récupères, mais après, et de toute manière tu ne les passes pas à la page appelée).
Tu pourrais envisager d'utiliser des sessions pour les récupérer.
Ou placer ton code de vérification dans la page du formulaire, au début. SI on arrive sur cette page par un POST, on fait les vérifications, en cas d'erreur on a les valeurs à utiliser pour remplir le formulaire...

Pour ton problème de DIV : c'est plus une question de CSS/HTML...
Le plus simple, c'est de placer un lien vers la page d'accueil, et de mettre la bannière en "background-image" (ou encore plus simplement en image).
HTML (à placer dans ton DIV, ou mieux dans un H1) :
<a href="accueil.html" id="banniere">accueil</a>
CSS :
#banniere {
background-image:url("mabanniere.jpg");
background-repeat: no-repeat;
height:90px; /* La hauteur de la banniere */
width:100%;
display:block;
text-indent:-10000px;
}

Simax150
Invité n'ayant pas de compte PHPfrance

12 avr. 2010, 12:54

Wahou !
Quelle rapidité !

Je me sent idiot d'un coup :oops: :oops: :oops: ...
Donc merci beaucoup pour la bannière !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 avr. 2010, 14:50

Modération :
Puisque ta question est résolue, je l'indique en ajoutant la petite icône verte "Résolu" pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.

TTu peux réaliser cette opération toi-même en cliquant sur le bouton Image en haut à droite de la réponse qui te semble la plus pertinente, si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer