8791 sujets

Développement web côté serveur, CMS

Bonjour,

Ayant (à moitié) terminé mon site, je suis assez fière de moi car je l'ai fait de A à Z, mais il y a quand même un petit problème, Je m'explique : J'ai voulu décomposer mon site en PHP, pour pouvoir changer mon design plus facilement, etc (grâce à un tutoriel). Mais ce code marche seulement pour les pages HTML. Ayant un script PHP j'ai une page en PHP, et là ça bloque. Voici le code :

<?php

 if(isset($_GET['p']) && preg_match("/^[a-z0-9]+$/i",$_GET['p'])){  
         $p=strtolower($_GET['p']);
        if(file_exists("pages/$p.html")){
        include "pages/$p.html";
}
}
else{
		include "pages/index.html";
	}	

?>


Que faire pour pouvoir intégrer une page en PHP ?
Modifié par Mikachu (13 Jan 2010 - 12:52)
Salut et bienvenue parmi nous Smiley smile

En tant que modérateur, je me dois de te faire remarquer que tu n'as malheureusement pas respecté l'une des Règles de base du forum qui est d'afficher les codes et exemples proprement à l'aide des boutons [ code]... ici ton code HTML, CSS, PHP, etc.[ /code] (sans espace).

Je te remercie par avance de bien vouloir éditer ton message afin de le rendre conforme à cette règle. Smiley cligne

Bonne continuation Smiley smile

upload/1-code.gif
Salut,

Peut être en remplaçant tout simplement les extensions .html par des extensions .php dans ton code non ? Smiley smile
Salut Mikachu,

J'ai fait la colorisation syntaxique, seulement après l'avoir posté je ne voyais plus mon code, du coup je l'ai enlevé, d'ou le fait que tu me fasses la remarque Smiley ohwell .

Peut être me suis-je mal exprimée, j'aimerais pouvoir mettre des pages .html ET .php. Smiley smile
Bon je viens de le faire pour toi, et ça marche. Smiley cligne

Pour ta question, je ne suis pas assez calé en php pour te donner une réponse.
Bonjour,

Je ne suis pas sûre de comprendre ton problème... qu'est-ce qui ne marche pas ?

En d'autres termes, tu veux obtenir quoi, et tu obtiens quoi à la place ?
Bonjour mistike,

J'aimerais simplement pouvoir intégrer à mon design des pages en .php ET des pages en .html. Pour le html c'est fait, seulement j'ai plusieurs scripts php qui sont mis dans des pages php donc, et je voudrais que mon code soit juste autant pour l'HTML que pour le PHP.
Modifié par Audidounette (13 Jan 2010 - 13:08)
[mode cerveau=ON] Ah oui je crois que j'ai compris


 if(isset($_GET['p']) && preg_match("/^[a-z0-9]+$/i",$_GET['p'])){

         $p=strtolower($_GET['p']);

        if(file_exists("pages/$p.html"))
                include "pages/$p.html";
        elseif(file_exists("pages/$p.php"))
                include "pages/$p.php";
        else include "pages/index.html";

}

else{

		include "pages/index.html";

	}



Edit : ton code n'apparaît pas avec les balises, parce qu'il faut enlever les <?php et ?>

ReEdit : d'ailleurs je ferais plutôt comme ça :


if(isset($_GET['p']) && preg_match("/^[a-z0-9]+$/i",$_GET['p']))
         $p=strtolower($_GET['p']);
else $p = "index";

if(file_exists("pages/$p.html"))
         include "pages/$p.html";
elseif(file_exists("pages/$p.php"))
         include "pages/$p.php";
else include "pages/index.html"; 


[27 000 edits plus tard]
Le plus simple étant de nommer *toutes* tes pages .php, même si elles n'en contiennent pas, ça fonctionne très bien. Ca évite les mélanges de neurones, et si un jour tu souhaites ajouter un chouilla de php dedans, elles ont déjà le bon nom...
Modifié par mistike (13 Jan 2010 - 13:16)
Salut,

mistike a écrit :
Le plus simple étant de nommer *toutes* tes pages .php
+1 (tout simplement Smiley smile )
mistike a écrit :
Le plus simple étant de nommer *toutes* tes pages .php
+1 (tout simplement Smiley smile )
Je voulais le dire aussi mais je me suis retenu Smiley ravi
Mikachu a écrit :
Je voulais le dire aussi mais je me suis retenu Smiley ravi
Bonne résolution : "en 2010 je me lâche !" Smiley lol
Heyoan a écrit :
Salut,

+1 (tout simplement Smiley smile )

Bon ok on va me dire, ouais l'nouveau parle pour rien dire tout ça, mais... +1 j'avais la même approche du problème Smiley lol

Il y a quand même un truc qui me laisse perplexe : étant débutant, je ne pense pas que tu ais créé un site qui génère et supprime des fichiers .php ou .html sur le serveur, donc pourquoi faire une fonction aussi compliquée au lieu d'un simple include index.php ?
Modifié par shaihulud1979 (14 Jan 2010 - 08:31)
shaihulud1979 a écrit :
pourquoi faire une fonction aussi compliquée au lieu d'un simple include index.php ?
En fait si on reprend le premier code en ne changeant que les .html en .php c'est plutôt simple :
SI
* une variable p a été passée en get
* et qu'elle ne contient que des lettres de A à Z ou des chiffres de 0 à 9
* et que cette variable (en minuscules) accolée à .php correspond à un fichier existant
ALORS
* on fait un include de ce fichier
SINON
* on fait un include de index.php

En résumé c'est le minimum syndical de sécurisation avant de faire un include à partir d'une variable (d'autant plus qu'elle est directement modifiable dans l'url).
Bonjour,

Voilà j'ai suivi donc ce que vous m'avez conseillé, c'est à dire de changer toutes mes pages en .php, le problème c'est que maintenant mon design s'affiche mais le contenu qui se trouve sur les pages .php dans le dossier /pages, ne s'affiche plus.
Mon code:
 if(isset($_GET['p']) && preg_match("/^[a-z0-9]+$/i",$_GET['p'])){  
         $p=strtolower($_GET['p']);
        if(file_exists("pages/$p.php")){
        include "pages/$p.php";
}
}
else{
		include "pages/accueil.php";
	}	


Si quelqu'un pouvais m'aider, car moi en PHP je n'y connais pas grand chose..
Merci d'avance.
Hello,

si le contenu ne s'affiche pas on peut supposer que la page n'est pas trouvée. Pour faire le test :
if(isset($_GET['p']) && preg_match("/^[a-z0-9]+$/i",$_GET['p'])){   
	$p=strtolower($_GET['p']); 
	if(file_exists("pages/$p.php")){ 
		include "pages/$p.php"; 
	} else {
		echo '<p>page <strong>pages/'.$p.'.php</strong> inexistante !</p>';
	}
} else { 
	include "pages/accueil.php"; 
} 

Audidounette a écrit :
Si quelqu'un pouvais m'aider, car moi en PHP je n'y connais pas grand chose.
Pour info/rappel Alsacréations n'est pas le bon forum pour débuter en PHP. Smiley cligne