switch ? redirection ??

matthieuuu
Invité n'ayant pas de compte PHPfrance

24 nov. 2005, 14:26

Bonjour à tous !
Je n'y connais pas grand chose en php, c'est pour cela que je viens vous demander votre aide !

Je souhaiterais avoir sur mon site un seule page en php, du type :

:arrow: http://www.site.com/page.php?id_video=15&type=voir

Le numéro de la vidéo correspond à id_video et le type est soit "voir", soit "envoi", soit "telecharger".

Quel devrait être la structure de ma page php ??

Merci d'éclairer ma lanterne !
____
matthieuuu

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

24 nov. 2005, 14:31

Salut, une structure ressemblant a ceci

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

matthieuuu
Invité n'ayant pas de compte PHPfrance

24 nov. 2005, 15:10

J'ai déjà fait ça, mais ça ne marchera surement pas :

Code : Tout sélectionner

<?php if(isset($id_video)){ if(!is_numeric($id_video)){ echo "<p>Erreur !<p>"; echo "<br>"; echo "<p>Redirection en cours..."; echo "<script language=\"javascript\" type=\"text/javascript\">"; echo "<!--"; echo "window.location.replace(\"http://monsite.com\");"; echo "-->"; echo "</script>"; exit; } } //--------------------------------------------- $dossier_voir="http://monsite.com/videos/voir"; $dossier_envoi="http://monsite.com/videos/envoi"; switch($type) { case 'voir': $dossier=$dossier_voir;break; case 'envoi': $dossier=$dossier_envoi;break; } switch($id_episode) { case '01': include("$dossier/01.swf");break; case '02': include("$dossier/02.swf");break; case '03': include("$dossier/03.swf");break; default: include("$dossier/erreur.php");break; } ?>
Le probleme est que si je me rend sur http://monsite.com/page.php?type=envoi&id_video=01 je vai tomber dans mon dossier d'envoi avec un fichier 01.swf alor que mon fichier d'envoi se nomme 01.php3 ...

Pouvez-vous m'aider ?
Merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

24 nov. 2005, 15:27

quelque chose dans ce styl devrai fonctionner:

suivant $type on a soit une extension swf soit php suffit donc de préciser et concaténer.
switch($type)
{
	case 'voir': 
		$dossier=$dossier_voir;
		$extension=".swf";
		break;
	case 'envoi': 
		$dossier=$dossier_envoi;
		$extension=".php3";
		break;
}

$chemin=$dossier."/".$id_video.$extension;

if(file_exists($chemin))
	include($chemin);
else
	include($dossier."/erreur.php");
le 2eme switch n'est peut etre pas la peine suffit encore une fois de concaténer avec la variable $id_video.

par contre je suis pas sur que la fonction file_exists()
accepte un chemin avec http:// vaut mieux utiliser un chemin relatif si la les fichiers sont sur le meme serveur

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

matthieuuu
Invité n'ayant pas de compte PHPfrance

25 nov. 2005, 20:35

Bonsoir !
J'ai réussi à faire cela mais je commets toujours quelques erreurs !
surement les ELSE d'après moi, mais aussi les AND dans les IF... :?
Pouvez-vous m'aider svp ?
<?php

$type=$_GET['type'];
$id=$_GET['id_episode'];

//---------------------------------------------

$dossier_voir="/dossier/voir";
$dossier_envoi="/dossier/envoi";

switch($type)
{
    case 'voir':
        $dossier=$dossier_voir;
        $ext=".swf";
        break;
    case 'envoi':
        $dossier=$dossier_envoi;
        $ext=".php3";
        break;
}

$chemin=$dossier."/".$id.$ext;
$chemin2="/dossier2";


if(file_exists($_SERVER[DOCUMENT_ROOT] . $chemin) AND $type="voir")

	echo "<OBJECT classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"
 codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0\"
 WIDTH=100% HEIGHT=100%>";
	echo "<PARAM NAME=loop VALUE=false>";
	echo "<PARAM NAME=quality VALUE=high>";
	echo "<EMBED src=\"<? echo \"$_SERVER[DOCUMENT_ROOT]\"; ?><? echo \"$chemin\"; ?>\" loop=false quality=high WIDTH=100% HEIGHT=100% TYPE=\"application/x-shockwave-flash\" PLUGINSPAGE=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\">";
	echo "</EMBED>";
	echo "</OBJECT>";
	// include($_SERVER[DOCUMENT_ROOT] . $chemin);
	
else (file_exists($_SERVER[DOCUMENT_ROOT] . $chemin) AND $type="envoi")

include($_SERVER[DOCUMENT_ROOT] . $chemin);

else
	include($_SERVER[DOCUMENT_ROOT] . $chemin2 . "/erreur.php");

?>
Merci !

Mammouth du PHP | 1311 Messages

26 nov. 2005, 11:44

j'ai pas tres bien compris ou se trouve tes erreurs mais jai corrigé un bout de code
if(file_exists($_SERVER[DOCUMENT_ROOT] . $chemin) AND $type=="voir")

    echo "<OBJECT classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"
codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0\"
WIDTH=100% HEIGHT=100%>";
    echo "<PARAM NAME=loop VALUE=false>";
    echo "<PARAM NAME=quality VALUE=high>";
    echo "<EMBED src=\"<? echo \"$_SERVER[DOCUMENT_ROOT]\"; ?><? echo \"$chemin\"; ?>\" loop=false quality=high WIDTH=100% HEIGHT=100% TYPE=\"application/x-shockwave-flash\" PLUGINSPAGE=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\">";
    echo "</EMBED>";
    echo "</OBJECT>";
    // include($_SERVER[DOCUMENT_ROOT] . $chemin);
    
else (file_exists($_SERVER[DOCUMENT_ROOT] . $chemin) AND $type=="envoi")

include($_SERVER[DOCUMENT_ROOT] . $chemin);

else
    include($_SERVER[DOCUMENT_ROOT] . $chemin2 . "/erreur.php");

?>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 nov. 2005, 20:02

il manque surtout des accolades pour le if, tu as un tas d'instructions, "echo", a l'interieur qui doivent,je suppose, ne s'exécuter que si la condition est vrai. Or ici le test se fait sur la 1ere ligne :wink:

de plus c'est quoi ces "echo" a l'interieur d'un echo:
<?
echo "<EMBED src=\"<? echo \"$_SERVER[DOCUMENT_ROOT]\"; ?><? echo \"$chemin\"; ?>\" loop=false

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute