Vous n'êtes pas identifié(e).
Bonjour à tous,
Etant une bille un PHP, je m'en remet à vos conseils pour faire quelque chose qui parait simple mais qui "merde" dans la réalité.
Le besoin :
J'ai besoin de récupérer une variable d'une url en PHP et de tester si cette variable est vide ou non (si vide j'appelle une page spécifique),
si non vide, je dois interroger une base MYSQL pour vérifier si cette variable est présente dans une table indexée,
si oui : je redirige vers une page spécifique
si non : je test si le navigateur appelant et je redirige vers une autre page en fonction du navigateur, en passant la variable $j en POST
le tout : automatiquement sans que l'utilisateur n'ait besoin de cliquer sur le moindre bouton envoyer !
Ce que j'ai fait :
l'URL saisie par un utilisateur est pour exemple : http://www.essai.fr/page.php?j=23456
1. Dans page.php, je récupère $j = $_GET["j"];
2. Ensuite je teste si vide ou non et je redirige si vide: if(empty($t)) { header('Location: http://www.essai.fr/variablevide.html');}
si non vide, je me connecte à ma base et j'interroge :
$db = mysql_connect('host', 'user', 'pwd');
mysql_select_db('mabase',$db);
$sql = 'SELECT champ1,champ2 FROM mabase where champ1='.$j.' and champ2 is not null';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_assoc($req))
{
header('Location: http://www.essai.fr/variable_deja_utilisee.html');
}
mysql_close();
Et ensuite je ne sais pas comment m'en sortir !
Car, une fois passé toutes les étapes, je dois tester le navigateur appelant et rediriger vers une page en POST avec ma variable $j :
if (stristr($_SERVER['HTTP_USER_AGENT'], "Android")
|| strpos($_SERVER['HTTP_USER_AGENT'], "iPod")
|| strpos($_SERVER['HTTP_USER_AGENT'], "iPhone") )
{
header('Location: http://www.essai.fr/final.php?navigateur=smartphone&id='.$j);
}
else {
header('Location: http://www.essai.fr/final.php?&id='.$j);
}
// et je vide ma variable
unset ($j);
Bref si quelqu'un saurait comment je peux m'en sortir, se serait nickel top moumoute.
Thx a lot
Hors ligne
Bonjour,
Votre algorithme serait-il viable en mettant votre dernière étape en première étape?
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Bonjour,
Votre algorithme serait-il viable en mettant votre dernière étape en première étape?
-----------
La dernière étape est de tester le navigateur ... et ceci ne doit être tester qu'à partir du moment où la variable n'est pas présente dans la base.
Que me conseillerez vous ?
mon code actuel de page.php est
<?php
$t = $_GET["t"];
if(empty($t)) { header('Location: http://www.essai.fr/variablevide.html');
}
else {
$db = mysql_connect('host', 'user', 'pwd');
mysql_select_db('mabase',$db);
$sql = 'SELECT champ1,champ2 FROM mabase where champ1='.$j.' and champ2 is not null';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_assoc($req))
{
header('Location: http://www.essai.fr/variable_deja_utilisee.html');
}
mysql_close();
if (stristr($_SERVER['HTTP_USER_AGENT'], "Android")
|| strpos($_SERVER['HTTP_USER_AGENT'], "iPod")
|| strpos($_SERVER['HTTP_USER_AGENT'], "iPhone") )
{
header('Location: http://www.essai.fr/final.php?navigateur=smartphone&id='.$j);
}
else {
header('Location: http://www.essai.fr/final.php?&id='.$j);
}
}
unset ($j);
?>
Je ne sais pas comment :
- faire du POST en automatique vers final.php
- mettre mes conditions dans le bon ordre
- me faire des nœuds au cerveau
Thx a lot
Hors ligne
Je dis cela car en général on applique toujours le contexte avant les traitements et pas l'inverse
Dit différemment on ne doit appliquer les traitements qu'en fonction du contexte.
Dernière modification par Jc (06-10-2012 14:06:36)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Hors ligne
Je reprends ma première pharse : je suis une bille en PHP, et je post sur ce forum pour savoir comment quelqu'un écrirait le code ... Merci quand même
Hors ligne
Laissez votre algorithme ainsi, il vous permet en effet les traitements minimums, revoyez juste la gestion de votre navigateur.
Pour faire du POST en traitement, le mieux aurait été d'implémenter votre front controller en Javascript. C'est la raison pour laquelle, dans ce contexte il aurait fallu commencer par identifier le contexte, car js est plus adapté à cette identification (même si on peut la faire indifféremment en js ou php).
Si votre traitement en POST n'est pas une exigence absolue et vous pouvez gérer en GET, gardez votre algorithme et restez en PHP. Je vous rappele d'ailleurs qu'un Front controller travaille sur l'URL et donc en GET exclusivement du moins en PHP
Dernière modification par Jc (06-10-2012 14:20:57)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne