[php] Redirection de page sous conditions...

Résolu/Fermé
scorpus.keylog - 12 nov. 2007 à 12:53
s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 - 15 nov. 2007 à 01:55
Bonjour,
Je suis entrain de realiser un petit script, pour essayer de dispacher les utilisateurs et eviter un probléme CPU high load dans mon serveur... mais je tape dans un probléme depuis 2 heures que j'arrive pas a résoudre....

1ére version du script (tout en php en utilisant les headers):

<?php
//connexion a la base
mysql_connect("localhost", "jouteyan", "pass");
mysql_select_db("db");


//recuperation du nombre d utilisateurs
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$nbr_utilisateur = mysql_fetch_array($retour);

if ($nbr_utilisateur < 30)
header('Location: http://www.jouteya.net/tv-bt/index.php');
else
header('Location: http://tv-bt.jouteya.net/index.php');
?>

Le soucis avec ce code c'est qu'il me redirige tjs ver tv-bt mm si j'ai plus ou moins de 30 utilisateurs, j'ai nétoyer le cache relancer mon script a plusieurs reprise... rien a faire


ayant su que des lignes de codes avant le header peuvent poser probléme je suis passé à la
2 version du code cette fois en lancant la redirection en javascript:


Code:
<?php
//connexion a la base
mysql_connect("localhost", "jouteyan", "pass");
mysql_select_db("db");


//recuperation du nombre d utilisateurs
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$nbr_utilisateur = mysql_fetch_array($retour);

if ($nbr_utilisateur < 30)
'<script language="JavaScript">self.location="http://www.jouteya.net/tv-btindex.php"</script>';
else
'<script language="JavaScript">self.location="http://tv-bt.jouteya.net/index.php"</script>';
?>
dans ce cas il n y a pas de redirection la page reste figée.

si quelqu'un arrive a voir ou a une idée de la solution qui peut me tirer de ce probléme :') merci
A voir également:

7 réponses

s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 617
12 nov. 2007 à 13:02
Salut,

Sauf erreur de ma par j'aurrais plutôt mis :


<?php
//connexion a la base
mysql_connect("localhost", "jouteyan", "pass");
mysql_select_db("db");


//recuperation du nombre d utilisateurs
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysql_fetch_array($retour);
$nbr_utilisateur = $donnees['nbre_entrees'];

// On vérifi que $nbr_utilisateur contient bien ce qu'on veut
echo 'N'ombre d'utilisateur : '.$nbr_utilisateur ;


Le code avec modification du header doit être mis avant l'affichage de donnés sinon tu auras un message d'erreur.
2
scorpus.keylog
13 nov. 2007 à 13:11
RE salut tout le monde
l'erreur ne viens pas de la, ca je l'ai commis quand j'ai recopier le code dans le site de comment ca marche... la variable(je l'ai teste) elle contient bien le nombre total des visiteurs connecte dans les 5 dernieres minutes, mais apparament le soucie viens du faite que headers ne supporte pas des ligne de code avant... c pour ce la j ai essayer de passer par du javascript et apparament dans le deuxieme c un souci de ' et de " si quelqu'un peut verifier la syntaxe... je pensse ca viens de la
1
s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 617
13 nov. 2007 à 14:40
"mais apparament le soucie viens du faite que headers ne supporte pas des ligne de code avant..."

Je me répète et ça devient lassant de façon général ...

Le code avec modification du header doit être mis avant l'affichage de donnés sinon tu auras un message d'erreur.

Ta page ne s'afficherait même pas si tu avais une erreur de header.

-__-
0
s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 617
13 nov. 2007 à 14:44
Ha oui au fait bien sur il ne faut pas faire boucler code ...

http://www.jouteya.net/tv-bt/index.php

http://tv-bt.jouteya.net/index.php


Si index.php est le même sur les deux lien (avec le code que tu as donné plus haut) tu finiras toujours par te retrouver dans le cas "else" sauf si la condition < 30 reste vrai trop longtemps (30sec en général) tu finiras sur un timeout.

Ton 2ème lien devrai être du genre :


http://www.jouteya.net/tv-bt/full.php

full.php -> Le site est temporairement saturé, veuillez revenir plus tard, merci.



Mais ça c'est qu'une question de logique.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 617
13 nov. 2007 à 14:55
Autre chose, d'un point de vu référencement c'est très mauvais d'avoir 2 liens différent qui pointe vers la même chose. C'est du "duplicat content" et google va blacklister les deux liens. Et tu va perdre tout ton référencement.

Là je fais référence aux domaine et sous domaine que tu viens de diffuser ici.
0
scorpus.keylog
14 nov. 2007 à 22:09
Bonjour,
pour l'instant ils ont referencer les deux liens, j'ai utiliser un sous domaine pour resoudre le soucis mais apparament ca n'a pas resolu grand chose vue que l'hebergeur bloque tout mes domaines et sous domaines... si non pour le script j'ai pu bidouiller dessus avec un ami a moi et on a resolu le probleme c'ete effectivement un probleme de syntaxe... le script je le met a la racine de jouteya.net ca evite que ca boucle mais tu as raison spark je suis tomber sur ce probleme quand je l'ai mis dans l'index de tv-bt...
je vous fait une copie du code mtn il marche bien:
alors pour caluler le nombre de visiteurs j'ai utilise un siple code que jai trouver dans le siteduszero je ne sais pas si on peut mettre des liens ici, mais c pour le bien de la science :)
https://openclassrooms.com/fr/courses

aprer pour le script qui dispache les visiteur je l'ai mis dans une page dispacher.php que j'appelle en include dans l'index:

<?php
mysql_connect("localhost", "login", "pass");
mysql_select_db("db");
$retour = mysql_query("select * from connectes");
$donnees = mysql_num_rows($retour);


if ($donnees < 250) echo "<script language='JavaScript'>self.location='http://www.jouteya.net/tv-bt/index.php'</script>";
else echo "<script language='JavaScript'>self.location='http://tv-bt.jouteya.net/index.php'</script>";
?>

la le code il marche bien a 250 visiteurs il redirige vers le deuxieme lien (mais ca ne m'as tjs pas resolue le probleme il va falloir que je change d'hebergeur).
si quelqu'un a une idee pour ameliorer le code exemple: le mettre dans l'index sans que ca boucle ca sera bien aussi.

Merci a vous
0
s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 617
15 nov. 2007 à 01:55
"si quelqu'un a une idee pour ameliorer le code exemple: le mettre dans l'index sans que ca boucle ca sera bien aussi. "

http://www.commentcamarche.net/forum/affich 4023975 php redirection de page sous conditions#4
0