8791 sujets

Développement web côté serveur, CMS

Pages :
Bonjour,

J'utilise massivement les pseudo frame pour mon site (chaque page est appelée à l'aide d'une pseudo frame).

Voici mon code pour les pseudo frame :

if(!empty($_GET['page']))
{
	if(file_exists('includes/' . $_GET['page'] . '.php') AND !preg_match("/(\.|config|inc)/iU", $_GET['page'])) // gestion des fichiers contenus dans le dossier includes
	{
		  include("includes/".$_GET['page'].'.php');
	}
	else
	{
		if(file_exists('xlagenda327/' . $_GET['page'] . '.php') AND !preg_match("/(\.|config|inc)/iU", $_GET['page'])) // gestion des fichiers contenus dans le dossier xlagenda327
		{
			include("xlagenda327/".$_GET['page'].'.php');
		}
		else
		{
			include("includes/accueil.php");
		}
	}
}
else
{
	include("includes/accueil.php");
}


J'ai une variable dir à faire passer dans l'URL :
echo('<a href="index.php?page=config_galery&dir=' . $file . '">' . $jour . '-' . $mois . '-' . $annee . '</a>');


Malheureusement, mon dir est compris dans le $_GET['page'] de la pseudo frame, la page n'étant donc pas reconnue.

Est-il possible de séparer la page a afficher et la variable dir ? Et comment puis-je l'envoyer vers la prochaine page ?

En vous remerciant,

Killaman
Modifié par Killaman (23 Nov 2007 - 15:41)
Bonsoir,

en php un script inclu est considéré comme une partie du script appelant. Il n'y a donc pas de différence de contexte, une variable déclarée dans le fichier appelant est accessible dans le fichier appelé.
En termes moins technique, si tu déclare $dir dans ton fichier principal tu pourra y accéder directement dans ta pseudo-frame comme n'importe quelle variable php habituelle.

Plus d'info: Portée des variables @php.net
Donc, en gros, si je déclare en global ma variable $dir, que je la modifie dans mon script, elle sera toujours sauvegardé pour la page où je veux la rappeler ? même avec une modification et un rappel dans 2 pages différentes ?

Si c'est oui, déjà un bon point !

Maintenant, j'ai un autre probleme. En fait, cette variable $dir doit contenir le résultat dans un choix d'URL.

Par exemple, j'ai le choix entre plusieurs directories que j'ai listé par date avec un While et je veux que $dir contienne le directory choisi.

En gros, mon code, c'était ça :

while (($file = readdir($dh)) !== false) {
	if($file != '.' && $file != '..' && $file != $current && $file != "Thumbs.db") {
		if ($i >= $debut && $i <= $fin) {	
		
			list($annee, $mois, $jour) = explode("-", $file);
			echo('<a href="index.php?page=config_galery&dir=' . $file . '">' . $jour . '-' . $mois . '-' . $annee . '</a>');
			echo ("<br /><br />");
		}
		$i++;$compteur++;
	}
}


Et je ne sais pas comment indiquer le directory que je veux inserer dans $dir (peut-être avec un array() pour tous les inserer, mais comment récupérer le bon directory ?)

Merci pour votre aide
Modifié par Killaman (21 Nov 2007 - 22:22)
Killaman a écrit :
Donc, en gros, si je déclare en global ma variable $dir, que je la modifie dans mon script, elle sera toujours sauvegardé pour la page où je veux la rappeler ? même avec une modification et un rappel dans 2 pages différentes ?

Même pas besoins de la déclarer globale, elle l'est par défaut à moins d'être déclarée dans une fonction.


Pour le deuxième problème, j'avoue ne pas comprendre le but recherché (ce que tu veux mettre dans $dir) donc je ne suis pas d'une grande aide.
Modifié par Necromantik (21 Nov 2007 - 23:14)
En fait, j'ai créé une visionneuse d'images. Chaque série de photos (correspondant à un evenement) est stocké dans un dossier différent, dont le nom correspond à la date de l'evenement.
J'ai une fonction qui scanne ces dossiers pour les afficher sur une page web (en gros, faire un listing des dossiers de photos). Une fois ce listing effectué, je propose à l'utilisateur de choisir le dossier qu'il souhaite visualiser en cliquant sur son lien pour ensuite afficher les photos de ce dossier dans la visionneuse.

Je voudrais récupérer la variable correspondant au nom du dossier choisi pour ensuite la balancer dans la fonction de visualisation des photos (qui se sert de ce nom pour se placer dans le FTP et ainsi montrer les images qui y sont présentes).

Mais il faut que je récupère cette variable dans la fonction de listing, "franchir" le probleme des pseudo frame et enfin récuperer la variable dans la fonction d'affichage des photos...
Hello Killaman Smiley cligne ,

d'après ce que tu dis et les termes que tu emploies, il me semble que tu n'as pas bien compris comment fonctionne l'include Smiley langue !

Pour redire ce que dit Necromantik avec d'autres mots : que tu utilises 1 ou 99 fois la fonction include dans ta page index.php, au final tu n'auras généré qu'1 et 1 seule page... Or tu parles de passer une variable à une page "pseudo-framée" comme s'il s'agissait d'une frame (c'est d'ailleurs pour ça que n'aime pas le terme "pseudo-frame" qui prête à confusion).

Pour donner un exemple, si tu as le code suivant :
[b]index.php[/b]
<?php
$var = 33;
include('page1.php');
include('page2.php');
?>

[b]page1.php[/b]
<?php
$var = $var + 1;
?>

[b]page2.php[/b]
<?php
echo $var;
?>
au final c'est exactement comme si tu n'avais qu'1 page :
[b]index.php[/b]
<?php
$var = 33;
$var = $var + 1;
echo $var;
?>
Ce ne sont donc pas des pages que tu "include" mais seulement du code Smiley smile !

Du coup il n'existe aucun problème de pseudo frame à franchir Smiley ola !!!

Tu peux donc utiliser dans n'importe quelle "page" incluse le code
if(!empty($_GET['dir']))
par exemple.

A+
AAAAAAAAAAAh ! J'avoue que je ne voyais pas le truc comme ça, moi Smiley rolleyes
C'est vrai que vu ainsi, ça semble plus facile à comprendre.

Merci pour ton explication, j'ai enfin compris le but de la pseudo frame (parce que jusque là, pour moi, elle ne servait qu'à inclure une page dans une autre... Smiley confused )

Euh... par contre, j'ai toujours pas résolu mon problème d'inserer le bon choix dans mon $dir... Parce que dans mon While, si je met $dir = $file, ça l'ecrasera à chaque boucle... Devrais-je utiliser un array(), y stocker chaque $file et y récuperer le bon en fonction de mon $i qui sert à compter les boucles ?

Merci beaucoup
Modifié par Killaman (22 Nov 2007 - 14:33)
Killaman a écrit :
Parce que dans mon While, si je met $dir = $file, ça l'ecrasera à chaque boucle...
A moins d'avoir mal compris, si je regarde ta boucle while (dans laquelle il me semble qu'il manque un test is_dir Smiley cligne ) tu n'as pas de variable $dir mais tu fais un "echo...<a href=index.php?...dir=...>" donc aucun risque d'écrasement : en fonction du lien cliqué tu devrais bien récupérer la bonne valeur de $_GET['dir']...

A+
Modifié par Heyoan (22 Nov 2007 - 15:59)
Ca marche merci de ton aide, mais j'ai un autre petit souci (je le poste ici pour éviter la profusion de posts).

Je récupère une partie d'URL :

page=config_galery?visref=9w1w1

Et je souhaiterai récuperer d'un coté la variable page, et de l'autre la variable visref, si cette derniere est présente. Je me suis renseigné et j'ai remarqué qu'en couplant un explode à un preg_match, on peut le faire.

if (preg_match('\?',$_GET['page'])){
	list($page, $visref) = explode("?", $_GET['page']);
}


Voici mon code, mais je crois que je n'arrive pas à échapper le caractere '?' de mon preg_match. Comment faire svp ?

Promis, c'est ma derniere question Smiley confused
Killaman a écrit :
Je récupère une partie d'URL :

page=config_galery?visref=9w1w1

Et je souhaiterai récuperer d'un coté la variable page, et de l'autre la variable visref, si cette derniere est présente.

Euh... pourquoi utilises-tu '?' à la place de '&amp;' Smiley rolleyes ?

Un petit rappel sur Comment récupérer des variables en GET Smiley cligne .

A+
Modifié par Heyoan (23 Nov 2007 - 00:54)
Oulah que de complication pour rien Smiley smile

utilise & à la place de ? dans l'url ce sera bien plus simple.
EDIT: et &amp; dans le code html comme le dit Heyoan.

url?page=config_galery&visref=9w1w1

Ensuite le code:
$page = $_GET['page'];
$visref = $_GET['visref'];


En plus théorique le format d'une url est:
adresse?variable1=valeur1[&variable(1+#)=valeur(1+#)](# fois)



EDIT: damned je suis rotis par Heyoan Smiley biggol
Modifié par Necromantik (23 Nov 2007 - 00:21)
Ok, merci à vous deux, mon choix/visualisation de photo fonctionne parfaitement maintenant... en local sur easyphp.

Mais quand je le UP sur mon site, j'ai un
Warning: getimagesize() [function.getimagesize]: Read error! in /mnt/sites/lycee-saintjosephdecluny-oise.fr/web/includes/galery.php on line 63

Je me suis dit qu'il fallait passer en CHMOD 755 le dossier contenant mes photos, ainsi que mes photos, mais toujours le meme probleme...

Je suis sûr qu'il y'a un problèmes de droits, mais a mon niveau, j'ai passé les fichiers concernés en 755 sans résultats

a écrit :
Promis, c'est ma derniere question Smiley confused


OK, j'avais menti Smiley decu
Killaman a écrit :
Mais quand je le UP sur mon site, j'ai un
Warning: getimagesize() [function.getimagesize]: Read error! in /mnt/sites/lycee-saintjosephdecluny-oise.fr/web/includes/galery.php on line 63
A priori le getimagesize() ne trouve pas l'image... As-tu vérifié le chemin (et notamment une différence de Majuscule / minuscule) ? Sinon cela pourrait effectivement venir d'un problème de droit (il me semble que le changement de chmod peut parfois prendre quelques minutes Smiley murf ) : le plus simple est de vérifier à l'aide de ton logiciel FTP si l'image est bien présente sur ton serveur Smiley cligne .
J'ai gardé la même architecture entre mon site local et celui que je déploie sur internet, dans un soucis d'envoyer/récuperer les fichiers sans avoir a faire de modifications. Donc niveau image, je ne pense pas avoir un probleme d'accès.

Pour le chmod, je vais attendre un peu, je reviendrai dire ce qu'il en est tout à l'heure.
Je ne doute pas que l'architecture soit la même mais ce qui fonctionne en local (nom de répertoire avec des majuscules ou des accents, etc...) a toutes les chances de ne pas fonctionner en ligne.

Pour le chmod ça ne prend au pire que quelques petites minutes (pas 1h Smiley lol ) et, toujours avec ton logiciel FTP, c'est vite vérifié !

As-tu regardé si ton image était bien uploadée ?
Je penche pour ma part pour majuscules/minuscules, car je suppose que tu travailles sur windows et que ton hébergeur est sous Unix (il suffit que l'image aie une extension *.JPG et que tu fasse appelle à *.jpg, cela marchera sous windows mais pas sur un système Unix).

Ou encore des backslashes dans les chemins au lieu de slashes.


Non ?
Modifié par Necromantik (23 Nov 2007 - 15:12)
Mes repertoires de stockage d'images ont un nom qui correspond à leur date de création (par exemple : "22-11-2007"), celà pourrait-il venir d'ici ?

Sinon, mes images se trouvent toutes dans un repertoire, je peux les visionner en tapant l'URL directe (donc elles sont bien uploadées)

J'ai pris en compte aussi la possibilité d'avoir des espaces, caracteres spéciaux etc... dans le nom de mes images.

Tous mes chemins sont faits avec des "/", aucun "\".

Le nom de mes images ne comporte pas de majuscule, seulement des caractères alphanumériques. Mais bon, ça, ça ne devrait pas gener puisque je récupère le nom de l'image directement à partir du dossier que j'ai scanné et je le stocke ensuite dans une variable.

Et je ne pense pas que la ligne 63 (et ses environs) de mon fichier gallery.php soit responsable. En voici le code, au cas où :

ligne 62 - $fic_lu=$dir.$nomfic[$numero];		  
ligne 63 - $tail=GetImageSize($fic_lu);


$dir correspond à mon repertoire, $nomfic est le tableau contenant toutes les images de ce repertoire, $numéro l'image souhaitée et $ tail est la taille de l'image en cours de visionnage.
Ok, j'ai trouvé !

Le probleme venait du nom de mes repertoire, qui étaient composés de chiffres et de tirets. Il ne faut que des caractères alphanumériques.

Pour info, le getimagesize sans majuscules n'avait rien changé.

Encore merci à vous deux et toutes mes excuses pour le dérangement.
Pages :