Aller au contenu

redirection selon sexe


dev67

Sujets conseillés

Bonjour,

Je souhaiterais créer deux redirections différentes en fonction du sexe de la personne. J'utilises un script fonctionnant sur 2 fichier.

Il y a le fichier php gérant l'inscription

if (me('id') != "") {
$tpl -> Zone("regform", "notallowed");
_fnc("reload", 3, "?L=users.desktop");
}

if (isset($_SESSION["REG_ID"])) {
$tpl -> Zone("regform", "notallowed");
_fnc("reload", 0, "?L=registration.questionaire");
}

/* Handle Submit */
if (isset($_POST["Submit"]) || isset($_POST["Correct"])) {

$errBreak = false;

foreach ($_POST as $var => $val) {
$_SESSION["REGISTER"][$var] = $val;
}

/* Check email address */
if (
!isset($_SESSION["REGISTER"]["email"])
|| $_SESSION["REGISTER"]["email"] == ""
|| !preg_match($CONF["REGEXP_EMAIL"], $_SESSION["REGISTER"]["email"])) {
$tpl -> Zone("error", "email");
} else {
/* Check Cloned email addresses */
if (!$CONF["REGISTRATION_ALLOW_DUPLICATE_EMAIL"] && myNum(myQ("
SELECT `email`
FROM `[x]users`
WHERE `email`='{$_SESSION["REGISTER"]["email"]}'
")) > 0) {
$tpl -> Zone("error", "emailClone");
session_unregister("REGISTER");
}

else {
/* Check username */
if (
!isset($_SESSION["REGISTER"]["username"])
|| $_SESSION["REGISTER"]["username"] == "" ||
!preg_match($CONF["REGEXP_USERNAME"], $_SESSION["REGISTER"]["username"])
|| strlen($_SESSION["REGISTER"]["username"]) < $CONF["USERS_USERNAME_MIN_LEN"]
|| strlen($_SESSION["REGISTER"]["username"]) > $CONF["USERS_USERNAME_MAX_LEN"]) {
$tpl -> Zone("error", "username");
$tpl -> Zone("usernameerror", "lenerror");
}

else {
/* Check username being in use */
if (myNum(myQ("
SELECT `username`
FROM `[x]users`
WHERE LCASE(`username`)='".strtolower($_SESSION["REGISTER"]["username"])."'")) > 0) {
$tpl -> Zone("error", "username");
$tpl -> Zone("usernameerror", "inuse");
} else {
/* Check Password form */
if (
!isset($_SESSION["REGISTER"]["password"])
|| $_SESSION["REGISTER"]["password"] == ""
|| strlen($_SESSION["REGISTER"]["password"]) < $CONF["USERS_PASSWORD_MIN_LEN"]
|| strstr($_SESSION["REGISTER"]["password"], " ")) {
$tpl -> Zone("error", "password");
$tpl -> Zone("passworderror", "lenghterr");
} else {
/* Check password against passcheck */
if (
!isset($_SESSION["REGISTER"]["passcheck"])
|| $_SESSION["REGISTER"]["passcheck"] != $_SESSION["REGISTER"]["password"]) {
$tpl -> Zone("error", "password");
$tpl -> Zone("passworderror", "nomatch");
} else {
/* Check verification code */
if (
!isset($_SESSION["REGISTER"]["code"]) ||
!isset($_SESSION["REGISTER"]["syscode"]) ||
$_SESSION["REGISTER"]["code"] != $_SESSION["REGISTER"]["syscode"]) {
$tpl -> Zone("error", "code");
} else {
/* Check age */
if (
!isset($_SESSION["REGISTER"]["bday"]) or
!isset($_SESSION["REGISTER"]["bmonth"]) or
!isset($_SESSION["REGISTER"]["byear"]) or
_fnc("age", $_SESSION["REGISTER"]["bmonth"]."/".$_SESSION["REGISTER"]["bday"]."/".$_SESSION["REGISTER"]["byear"]) < $CONF["USERS_MIN_AGE"]
) {
$tpl -> Zone("error", "age");
} else {
/* Form was correctly filled */

if (!isset($_SESSION["REG_ID"])) {

/* Set reference data */
if ($CONF["REGISTRATION_SAVE_REFERENCE"]) {
if ($CONF["REGISTRATION_REFERENCE:HTTP_REFERER"]) $refData = $_SERVER['HTTP_REFERER'];
else $refData = (isset($_GET["ref"])?$_GET["ref"]:NULL);
} else $refData = NULL;

$user_settings["MAIL"]["NOTIFICATION"] = array(
"MESSAGES" => 1,
"EVENTS" => 1,
"BIRTHDAY" => 1,
"PROFILECOMMENT" => 1,
"CONTACTREQUEST" => 1,
"NUDGE" => 1
);

/* Save to database */
myQ("
INSERT INTO `[x]users`
(
`email`,
`birthdate`,
`gender`,
`username`,
`password`,
`country`,
`state`,
`city`,
`zipcode`,
`active`,
`registration_date`,
`registration_reference`,
`age`,
`settings`
)
VALUES
(
'{$_SESSION["REGISTER"]["email"]}',
'{$_SESSION["REGISTER"]["bmonth"]}/{$_SESSION["REGISTER"]["bday"]}/{$_SESSION["REGISTER"]["byear"]}',
'{$_SESSION["REGISTER"]["gender"]}',
'{$_SESSION["REGISTER"]["username"]}',
'".md5($_SESSION["REGISTER"]["password"])."',
'{$_SESSION["REGISTER"]["country"]}',
'{$_SESSION["REGISTER"]["state"]}',
'{$_SESSION["REGISTER"]["city"]}',
'{$_SESSION["REGISTER"]["zipcode"]}',
'".($CONF["REGISTRATION_AUTO_APPROVE"] && !$CONF["REGISTRATION_APPROVE_UPON_EMAIL_CHECK"]?"1":"0")."',
'".date("U")."',
'{$refData}',
'"._fnc("age", "{$_SESSION["REGISTER"]["bmonth"]}/{$_SESSION["REGISTER"]["bday"]}/{$_SESSION["REGISTER"]["byear"]}")."',
'".pk($user_settings)."'
)
");

couplé avec le fichier tpl affichant la page

<td width="150" align="right" valign="top"><strong>[I Am A: {7550}]</strong> </td>
<td align="left" valign="top"><select name="gender" id="gender">
<LOOP genderoption>
<option value="{gender}">{gender}</option>
</LOOP genderoption>
</select></td>
</tr>
<tr>
<td width="150" align="right" valign="top"><strong>[Username: {7555}]</strong></td>
<td align="left" valign="top"><input name="username" type="text" id="username" maxlength="{username_maxlen}" />
<br />
[Username must be between {username_minlen} and {username_maxlen} characters. Spaces or special characters are not allowed. Username is not case sensitive. {7560}] </td>
</tr>
<tr>
<td width="150" align="right" valign="top"><strong>[Password: {7570}] </strong></td>
<td align="left" valign="top"><input name="password" type="password" id="password" />
<br />

Seuleument voila, nulle part sur le fichier php (a part au niveau de l'enregistrement sur la base) je ne trouves de ligne de code concernant le sexe et comme dit je souhaites que lorsqu'il s'agit d'un homme il soit redirigé vers une page et une femme vers une autre page.

Merci d'avance pour vos conseils.

Lien vers le commentaire
Partager sur d’autres sites

J'ais fait comme cela

/* Check age */
if (
!isset($_SESSION["REGISTER"]["bday"]) or
!isset($_SESSION["REGISTER"]["bmonth"]) or
!isset($_SESSION["REGISTER"]["byear"]) or
_fnc("age", $_SESSION["REGISTER"]["bmonth"]."/".$_SESSION["REGISTER"]["bday"]."/".$_SESSION["REGISTER"]["byear"]) < $CONF["USERS_MIN_AGE"]
) {
$tpl -> Zone("error", "age");
} else {
/* genre */
if ($_SESSION["REGISTER"]["gender"]=="male") {
header('Location:page_mec.php');
}
else if ($_SESSION["REGISTER"]["gender"]=="cpl") {
header('Location:page_cpl.php');
}
else {
header('Location:page_fille.php');
} else {
/* Form was correctly filled */

if (!isset($_SESSION["REG_ID"])) {

/* Set reference data */
if ($CONF["REGISTRATION_SAVE_REFERENCE"]) {
if ($CONF["REGISTRATION_REFERENCE:HTTP_REFERER"]) $refData = $_SERVER['HTTP_REFERER'];
else $refData = (isset($_GET["ref"])?$_GET["ref"]:NULL);
} else $refData = NULL;

$user_settings["MAIL"]["NOTIFICATION"] = array(
"MESSAGES" => 1,
"EVENTS" => 1,
"BIRTHDAY" => 1,
"PROFILECOMMENT" => 1,
"CONTACTREQUEST" => 1,
"NUDGE" => 1
);

et sur le fichier tpl couplé avec ce fichier php

 <LOOP genderoption>
<option value="{gender}">{gender}</option>
</LOOP genderoption>

Et maintenant j'ais une page blanche, je ne vois pas le problème

Lien vers le commentaire
Partager sur d’autres sites

La redirection doit surement s'effectuer immédiatement et m'envoyer sur la page page_mec.php (ou fille ou cpl).

Le script se compose de plusiers dossiers. Il y a le dossier modules regroupant les fichiers php qui gèrent les fonctions et le dossier themes contenant les fichiers tpl gérant l'affichage.

Par exemple pour l'inscription dans le dossier module on trouves le fichier register.php et dans le dossier theme, le fichier register.tpl et donc lors de l'inscription on remplis les différents champs (nom, age, genre, adresse mail, etc....) et en bas de page on valides en cliquant sur un bouton pour passer à l'étape 2 de l'enregistrement (questionnaire particulier) et c'est cela que j'aimerais qui se passe (si homme redirigé vers mec.php, si cpl vers cpl.php et si femme vers femme.php.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Pour faire une redirection PHP :

header("Location: page.html");

Mais bien sûr, je pense que ça ne te sera d'aucune utilité car il ne s'agit certainement pas d'un simple changement de page, encore faut-il conserver toute la mécanique derrière, et ça, sans connaître l'ensemble de ton script, je ne vois pas comment on pourrait te répondre.

Sinon, s'il s'agit juste d'un changement de style graphique, alors il serait préférable de simplement switcher sur la feuille de style.

Modifié par Ernestine
Lien vers le commentaire
Partager sur d’autres sites

J'ais fait comme cela le fichier register.php

PHP:

<?php

/* Check Structure Availability */
if (!defined("CORE_STRAP")) die("Out of structure call");


$tpl = new template;
$tpl -> Load("register");

/* genre */
if ($_SESSION["REGISTER"]["gender"]=="male") {
header('Location:page_mec.php');
}
else if ($_SESSION["REGISTER"]["gender"]=="cpl") {
header('Location:page_cpl.php');
}
else {
header('Location:page_fille.php');


}
$tpl -> CleanZones();
$tpl -> Flush();

?>

et sur le fichier tpl couplé (register.tpl) avec ce fichier php

Code:

<!-- header --><!-- /header -->
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="530"> </td>
<td rowspan="2"> </td>
<td width="290"> </td>
</tr>
<tr>
<td width="530" valign="top"><!-- leftpane --><form method="post">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="25"> </td>
<td><h1>[Register {50}] </h1>
<p>[Welcome! {7510}]   </p>
<p> </p>
<p>[Let's get started! {7515}] </p>
<p> </p><!-- breadcrumbs --><!-- /breadcrumbs --> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td height="8" colspan="2"><img src="theme/default/images/frame/spacer.gif" alt="Spacer" height="8" /></td>
</tr>
<tr>
<td colspan="2" background="theme/default/images/frame/block_border_top.gif" bgcolor="#AEC5FD"><img src="theme/default/images/frame/spacer.gif" alt="Spacer" height="14" /></td>
</tr>
<tr>
<td bgcolor="#DCE6FF"> </td>
<td bgcolor="#DCE6FF"> </td>
</tr>
<tr>
<td bgcolor="#DCE6FF"> </td>
<td bgcolor="#DCE6FF"><h2>[Please complete the following {7520}] </h2></td>
</tr>
<tr>
<td width="150" align="right" valign="top"><strong>[I Am A: {7550}]</strong> </td>
<td align="left" valign="top"><select name="gender" id="gender">
<LOOP genderoption>
<option value="{gender}">{gender}</option>
</LOOP genderoption>
</select></td>
</tr>
</table><!-- /rightpane --></td>
</tr>
</table>
<!-- footer --><!-- /footer -->

La redirection s'effectue immédiatement et m'envoie sur la page page_fille.php .

Comment puis je faire pour que seuleument après avoir selectionné mon genre je suis redirigé vers la page souhaitée en cliquant sur un bouton par exemple

Merci d'avance pour vos réponses

Lien vers le commentaire
Partager sur d’autres sites

...le par contre je ne sais pas comment mettre le sujet en résolu, désolé

On ne met pas ! Ce n'est pas la politique du Hub :)

Par contre, il serait intéressant que tu donnes la méthode que tu as appliquée pour régler ton problème. Cela pourra servir à un autre plus tard ;)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...