Afficher le sommaire de la page

mercredi 27 février 2008

Authentification HTTP automatique

27 02 2008

Vous avez des fichiers à protéger et une interface d'administration en parallèle avec protection au backoffice via PHP et sessions.
Pour que vos dossiers ne soient pas accessible par tous le monde si l'url d'un fichier est découverte,

Trois solutions s'offrent à vous :
- Soit je mets mes fichiers en bdd
- Soit je les sors de l'arborescence web et les rapatrie ensuite en php avec header appropriés
- Soit je protège tous mes dossiers avec un htaccess

Mon exemple concernera la troisième solution.

[ Lire la suite  ]



mardi 29 janvier 2008

Warning: Cannot modify header information - headers already sent by ...

29 01 2008

Une erreur si récurrente que tout le monde la pose encore sur tous les forum :)

Les fonctions php telles que header(), setcookie() ou session_start() sont des fonctions qui manipulent les entêtes http d'une page. Les entêtes http sont là pour spécifier au navigateur client quel type de page il va devoir afficher.

Avant l'appel de ces fonctions il ne faut donc pas générer le moindre flux vers le client.

Que ce soit html ou bien un simple espace blanc ou saut de ligne avant la balise <?php, le serveur renverra l'erreur Warning: Cannot modify header information - headers already sent by ... (ou similaire) ne pouvant plus modifier les entêtes déjà envoyés.

Certains serveurs ne seront pas touchés si leur configuration php contient la variable output_buffering à on

Il est aussi possible de forcer la configuration grâce à une ligne dans un htaccess : PHP_FLAG output_buffering on Cela permet de faire patienter le flux (bufferisation) si une fonction devant modifier les header est appelée avant.



vendredi 25 janvier 2008

Sources "Une pipette pour le web"

25 01 2008

Voici les sources de la pipette faite il y a plus d'un an, j'avais laissé ça dans un placard et du coup pas le temps de m'y replonger.

cf. Une pipette pour le web (16/11/2006)

[ Lire la suite  ]



exit() et redirection via header()

25 01 2008
<?php
  if($redirect) 
  {
    header("Location: http://developpeur.mediabox.fr");
  }
  
  unlink('mon_fichier_tres_important.pdf');
 
  ma_fonction_qui_nexiste_pas();
 
  unset($_SESSION);
 
  mysql_query("DROP DATABASE mb_db", $connexion); // : )
?>

Essayez ceci pour voir ^^

Bon effectivement je sort l'artillerie lourde, mais il faut savoir que la fin d'une page php continue d'être exécutée sur le serveur malgré une redirection via un header Location.

Du coup vous pouvez faire échouer votre redirection si une erreur survient, faire une manipulation non souhaitée ou redéclarer des variables et ensuite vous demander à quelle endroit tout ceci a été modifié.

Donc un petit conseil :

<?php
  if($redirect) 
  {
    header("Location: http://developpeur.mediabox.fr");
    exit(); // Important !
  }
 
  unlink('mon_fichier_tres_important.pdf');
 
  ma_fonction_qui_nexiste_pas();
 
  unset($_SESSION);
 
  mysql_query("DROP DATABASE mb_db", $connexion); // : )
?>

Stoppez vos scripts après un header :)



jeudi 11 octobre 2007

FileReference et la récupération de données

11 10 2007

A l'utilisation du petit module d'upload de JeanPhi, j'ai eu besoin de retourner le nom du fichier uploadé renommé à la volée par mon script PHP.

Problème car la classe n'accepte pas l'utilisation de session dans la page appelée !
Alors on envisage de passer par bdd ou fichier texte temporaire mais bon très lourd pour retourner simplement quelques caractères...

Autres alternatives ? ->
filereference-and-sessions-a-bug-from-hell -> Problème avec divers navigateur

Après de nombreuses recherches, rien n'était prévu pour gérer des retours via la class filereference.

Mais un nouveau petit ecouteur est sortit avec Flash CS3 : onUploadCompleteData

Du coup, un simple

myListener.onUploadCompleteData = function(myFileReference, retour) {
	stat.text = "Le transfert est maintenant termine !";
	flash.external.ExternalInterface.call("module._getMyLastFile", retour);
	prog.text = "";
};

récupère le echo 'mon nouveau nom de fichier'; dans ma page d'upload PHP.

Simple mais très très peu documenté :)

merci à MB et Tonic ;)



jeudi 16 novembre 2006

Une pipette pour le web

16 11 2006

J'ai cherché il y a quelque temps une pipette permettant de récupérer la couleur d'images uploadées dans le cadre d'une interface d'administration et je n'avais pas trouvé.

Finalement, je me suis amusé à en développer une car le principe est en définitive pas si compliqué que ça ^^

[ Lire la suite  ]



dimanche 5 novembre 2006

Un affichage structuré basique

05 11 2006

Sur le forum dreamweaver, une question récurente réapparait fréquemment qui est la mise en page et l'affichage de données à la sortie de base de données.

Simple ? Oui, mais pour les personnes se lançant pied joins dans le domaine de la programmation web, cela parait à première vue beaucoup plus compliqué ;). Et rappelons nous que ce sont finalement nos bases d'apprentissage du couple Php / Mysql :)

Effectivement, après des heures d'applications de balises Html au milieu de son incompréhensible code Php (j'en fais trop peut-être ? ^^) avec un <td> par-ci, un </tr> par là ... et le résultat ? vous devinez ? oui on est d'accord alors voyons ça calmement ;)

[ Lire la suite  ]