Aller au contenu

  • Choisissez un arrière-plan

PHP


30 réponses dans ce sujet

#1
john_lennon

    Univers DeLL

  • Administrateur
  • 2164 messages
  • Localisation :Bordeaux

*
MESSAGE POPULAIRE !

Voici quelques astuces PHP.

Comment exécuter du PHP dans un fichier d'extension .html?


Ouvrir le fichier .htaccess à la racine de votre serveur (s'il n'existe pas, créez le) et rajouter:
  • pour du php 5:
    AddHandler application/x-httpd-php5 .html .htm
  • autre:
    AddHandler application/x-httpd-php .html .htm

Exécuter par défaut le fichier index.php lorsque le fichier index.html est prioritaire


Il faut utiliser l'URL rewriting dans le fichier .htaccess à la racine de votre serveur (s'il n'existe pas, créez le) et rajouter:
RewriteEngine On
RewriteRule ^$ index.php [L]

Faire un site web multilangue


La traduction google n'est pas parfaite mais elle permet de comprendre dans l'ensemble le contenu du site et évite de se prendre la tête à traduire entièrement votre site dans toutes les langues.
La page de votre d'accueil du site étant index.html, créer une page index.php à la racine du serveur ayant pour code:
<?php
$langue_user=substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2);
if ($langue_user<>"" || $_SESSION["ch_langue"]<>"")
{
	$referrer=$_SERVER['HTTP_REFERER'];
	switch($langue_user){	
	case "fr":
		header("Location: index.html");
		break;
	default:
		header("Location: http://translate.google.fr/translate?sl=fr&tl=".$_SERVER["HTTP_ACCEPT_LANGUAGE"]."&u=url-du-site/index.html");
		break;
	}
}
else
	header ("Location: index.html");
?>


#2
john_lennon

    Univers DeLL

  • Administrateur
  • 2164 messages
  • Localisation :Bordeaux
Voici une autre astuce:

Vérifier la validité d'une url


La fonction suivante permet de vérifier si l'url passé en paramètre est valide en retour des codes erreurs:
function check_connect($host,$path)
//verifie la validite de l'adresse, c'est a dire on regarde si le site existe
// bien...
//on rend dans un tableau :
// "statut" : 0 si KO, 1 si redirect ou bien pour faire passer en local, 2 si OK
// "code" : code HTTP
// "message" : message
{
	if(!TEST_URL)
	//si on travaille en local, on ne se connecte pas
	{
    	$tab_return["statut"] = 1;
    	$tab_return["code"] = 0;
    	$tab_return["message"] = "Pas de test de connexion\n";
    	return $tab_return;
	}
	$connect = 0;
	$no_code = 0;
	//connexion par socket
	if ($fp = @fsockopen($host,80))
	{
    	//traitement du path
    	if(substr($path,strlen($path)-1) != '/')
    	{
        	if(!ereg("\.",$path))
            	$path .= "/";
    	}
    	//envoi de la requete HTTP
    	fputs($fp,"GET ".$path." HTTP/1.1\r\n"); 
    	fputs($fp,"Host: ".$host."\r\n");
    	fputs($fp,"Connection: close\r\n\r\n");
    	//on lit le fichier
    	$line = fread($fp,255);
    	$en_tete = $line;
    	//on lit tant qu'on n'est pas la fin du fichier ou
    	// qu'on trouve le debut du code html...
    	while (!feof($fp) && !ereg("<",$line) )
    	{
        	$en_tete .= $line;
        	$line = fread($fp,255);
    	}
    	fclose($fp);
    	//on switch sur le code HTTP renvoye
    	$no_code = substr($en_tete,9,3);
    	switch ($no_code)
    	{
        	// 2** la page a été trouvée
        	case 200 :	$message = "OK";
                    	$color = "#33cc00";
                    	$connect = 2;
                    	break;
        	case 204 :	$message = "Cette page ne contient rien! (204)";
                    	$color = "#ff9966";
                    	break;
        	case 206 :	$message = "Contenu partiel de la page! (206)";
                    	$color = "#ff9966";
                    	break;
        	// 3** il y a une redirection
        	case 301 : $message = "La page a été déplacée définitivement!(301)";
                    	$message .= seek_redirect_location($en_tete);	
                    	$color = "#ff9966";
                    	$connect = 1;
                    	break;
        	case 302 :  $message = "La page a été déplacéé momentanément!(302)";
                    	$message .= seek_redirect_location($en_tete);
                    	$color = "#ff9966";
                    	$connect = 1;
                    	break;
        	// 4** erreur du coté du client
        	case 400 :	$message = "Erreur dans la requête HTTP! (400)";
                    	$color = "#ff0000";
                    	break;
        	case 401 :	$message = "Authentification requise! (401)";
                    	$color = "#ff0000";
                    	break;
        	case 402 :	$message = "L'accès à la page est payant! (402)";
                    	$color = "#ff0000";
                    	break;
        	case 403 :	$message = "Accès à la page refusé! (403)";
                    	$color = "#ff0000";
                    	break;
        	case 404 :	$message = "Page inexistante! (404)";
                    	$color = "#ff0000";
                    	break;
        	// 5** erreur du coté du serveur
        	case 500 :	$message = "Erreur interne au serveur! (500)";
                    	$color = "#ff0000";
                    	$connect = 1;
                    	break;
        	case 502 :  $message = "Erreur cause passerelle du serveur! (502)";
                    	$color = "#ff0000";
                    	break;
        	// cas restant
        	default : $message = "Erreur non traitée -> numéro est : $no_code!";
                    	$color = "#000000";
                    	break;
    	}
	}
	else
	{
    	$message = "Impossible de se connecter par socket";
    	$color = "#ff0000";
	}
  //creation du tableau avec les valeurs a rendre
  $data_return["statut"] = $connect; //la page est OK ou KO (200 => OK sinon KO)
  $data_return["code"] = $no_code; //code HTTP renvoye
  $data_return["message"] = $message;
  return $data_return;
}

Exemple:
$url="http://www.autosurfs-remuneres.com";
$url_parsee = parse_url($url);  
$host = $url_parsee["host"];
$path = isset($url_parsee["path"]) ? trim($url_parsee['path']) : '';
$tab_return = check_connect($host,$path);
echo($tab_return["message"]); //affiche le message renvoyé

Exemple d'utilisation: je vérifie chaque jour, la présence du lien de mon site sur les sites partenaires par une tâche planifiée qui me renvoie un mail avec la liste des sites qui n'ont pas mis ou ont supprimé le lien.

Ce message a été modifié par Vinky - 28 September 2011 - 14:00:50.


#3
john_lennon

    Univers DeLL

  • Administrateur
  • 2164 messages
  • Localisation :Bordeaux
Il n'y a que moi à faire du php et qui est quelques astuces? Je me sens bien seul.

#4
Seigneur Gulrick

    Seigneur du couteau et du bidon

  • Technicien
  • 2461 messages
  • Localisation :Rambouillet - Yvelines
Pour le coup je n'en fais pas beaucoup en ce moment car pas de besoin, mais je vais devoir monter un porte folio, je risque fortement de m'y remettre ;)

Image IPB


#5
lynxy

    Responsable Technique

  • Administrateur
  • 2694 messages
  • Localisation :Metz
Je fais du PHP, mais je ne vois pas d'"astuces".

Image IPB
Image IPB


#6
john_lennon

    Univers DeLL

  • Administrateur
  • 2164 messages
  • Localisation :Bordeaux
Ben excuse moi, mais j'ai mis 2 jours à comprendre comment exécuter du php dans un fichier html,... donc pour ma part, ce sont des astuces ;)

#7
lynxy

    Responsable Technique

  • Administrateur
  • 2694 messages
  • Localisation :Metz
J'ai du mal à voir l'intérêt. Il suffit de changer l'extension, au fond.

Image IPB
Image IPB


#8
john_lennon

    Univers DeLL

  • Administrateur
  • 2164 messages
  • Localisation :Bordeaux
Pour ma part, mon site a d'abord était fait en .html. Il fallait que j'exécute du php sur la page principale index.html de mon site et pas en frame ou iframe.
J'avais donc 2 solutions:
1. Passer en .php ma page d'accueil .html -> il aurait fallu que je refasse tous mes liens, mon astuce multilingue, réattendre pour le référencement des mes pages,... Par cohérence, j'aurais renommé toutes les pages html en php -> tous les liens à refaire.
2. Exécuter du php dans du html -> rien à refaire

J'ai donc opté pour la 2ème solution qui ne me coutait rien à faire. Je suis fainéant et impatient.

Ce message a été modifié par john_lennon - 28 September 2011 - 20:17:36.


#9
Athar

    Glandeur d'une galaxie très très lointaine...

  • Animateur
  • 2071 messages
  • Localisation :France, Loire
Je ne sais pas si le mot "astuce" est le mieux employé ici, plutôt un genre de rubrique donnant quelques fonctionnalités pratiques, encore faut-il en avoir l'intérêt.


Par exemple, les erreurs, pour la plupart (au moins les plus répandus, type 404, 500) sont gérer de base via le serveur web, directement dans les configurations d'Apache2 :)

Ceci dit, cela peut toujours servir (même si perso, je n'en ai pas l'utilité^^).


PC de bureau/fixe (jeux, développement, etc.)
- Home made (i7-4960 (3.6GHz), 32Go DDR3 1866MHz (4x8Go), GTX980 4096Mo, 7 Intégrale x64, RAID0 SSDx2 256Go (512Go - Samsung 840 Pro) + SSD "Datas Windows" Crucial MX100 512Go et 2x SSD Crucial MX100 512Go (Jeux) + RAID0 2x1To (2To) + WD Velociraptor 150Go, écrans 2x Samsung SyncMaster T27A300 (27"), Clavier Corsair Gaming K95 RGB et souris G502 Logitech, alimentation Corsair 1200W 80plus gold)
Portable(s) (Travail)
- Asus G751JY-T7004H (Intel Core i7-4710HQ, 16 Go DDR3-L, SSD m.2 Samsung 256 Go + HDD 1 To 7200RPM, 17.3" LED Mat, NVIDIA GeForce GTX 980M 4Go GDDR5)
- HP EliteBook 8570w pour le travail (Intel Core i7-3630QM, 32 Go DDR3, SSD Samsung Pro 240Go, 15.6" Mat, NVIDIA Quadro K1000M 2Go GDDR3)
Serveur(s) (de stockage principalement)
- Home made MegaNAS (NAS v2) (Intel Core2Quad QX9300 (2.50GHz), 4Go DDR3 1333MHz (2x2Go), Carte graphique 7300LE, 1x RAID10 11To + 4x 2To + 2x 3To + 1x 1.5To + 2x 750Go (env. 28To), alim CoolerMaster Real Power Pro 850W)
- ESXi/Passerelle réseau FW (MB Tyan S5510, Intel Xeon E3-1230v2 (3.30GHz), SSD 30Go (uniquement pour l'OS ESXi), 2x1To pour les DataStores, alim Corsair HX650 80PLUS Gold)
Image IPB


#10
john_lennon

    Univers DeLL

  • Administrateur
  • 2164 messages
  • Localisation :Bordeaux
Non, là tu n'as pas compris mon astuce, c'est pour tester une url et savoir ce que retourne ton url et non ta propre url. Celle là je m'en fiche un peu puisque le serveur peut la gérer effectivement.

Par exemple, lors d'un échange de lien avec un site, je donne le tag à mettre sur un site, en contrepartie il me donne un tag à mettre sur mon site. Or, je ne vais pas aller voir tous les jours, si le tag existe bien sur leur site manuellement.
Pour cela, je récupère le code de la page et vérifie si le lien existe dans la page en question.
Or, il peut arriver que lors du passage du robot, le site soit down. Ce qui est arrivé pour le mien cette nuit, plusieurs fois le site a été down et quelques minutes après up. Du coup, j'ai eu un avertissement d'un des robots partenaire car il ne vérifie que la présence du le lien et rien d'autre. Or mon code dit en plus ce qu'il peut y avoir comme erreur: un site down,... -> vérification manuel du lien et pas d'avertissement. Mais je n'ai pas à me taper la vérification manuelle de tous les liens partenaires ;)

Ce message a été modifié par john_lennon - 28 September 2011 - 21:43:25.


#11
Vinky

    Responsable Graphique

  • Administrateur
  • 6011 messages
  • Localisation :Tours (37)
@JL : Pourquoi le fait de passer la page en PHP n'aurait pas été pratique, tu avais juste à faire une balise <?php> et remettre tes liens mais si tu as bien géré ton truc normalement tu as peu de changement à faire dans les liens.

#12
john_lennon

    Univers DeLL

  • Administrateur
  • 2164 messages
  • Localisation :Bordeaux
Parce que pour rester cohérent en programmation j'aurais du renommer toutes mes pages en .php -> renommer tous les liens et cela me faisait suer de le faire. De plus, il faut attendre que le robot google repasse sur les pages pour qu'ils ne prennent plus en compte les .html et prennent en compte les .php. Il ne passe pas tous les jours sur tous les sites.
Enfin, j'utilise des autosurfs comme expliquer sur mon site. Il aurait fallu que je repasse sur chacun d'eux pour renommer la page et attendre la validation. Cela aurait pris plusieurs jours.
Dernier point, je lance d'abord un index.php qui redirige sur le index.html si tu es en langue frenchy et sinon sur la translate.google.com. Donc, le index.php était déjà utilisé. Il aurait fallu que je renomme autrement mon index.html. Du boulot, pour pas grand chose, puisque en 1 ligne de code dans le .htacess, j'ai résolu mon problème.

Ce message a été modifié par john_lennon - 28 September 2011 - 21:47:11.


#13
Vinky

    Responsable Graphique

  • Administrateur
  • 6011 messages
  • Localisation :Tours (37)
Mouais je ne sais pas si intégrer du php dans du .html c'est plus propre que d'avoir une page en php sur tous le site contre du html pour les autres ^_^

#14
john_lennon

    Univers DeLL

  • Administrateur
  • 2164 messages
  • Localisation :Bordeaux
J'allais pas refaire tout mon site pour juste tester un truc ;)

#15
Vinky

    Responsable Graphique

  • Administrateur
  • 6011 messages
  • Localisation :Tours (37)
Non mais quitte à faire un truc "dégueulasse" perso j'aurais pris l'option extension des pages non uniforme plutôt que la tienne je pense ;)

Surtout que niveau w3c tu n'es plus du tout aux normes maintenant, je me trompe ?

#16
lynxy

    Responsable Technique

  • Administrateur
  • 2694 messages
  • Localisation :Metz
Ca ne change rien pour les normes W3C. Si elles n'étaient pas respectées, elles ne le seront pas plus, et si elles l'étaient, elles le resteront.

Image IPB
Image IPB


#17
Vinky

    Responsable Graphique

  • Administrateur
  • 6011 messages
  • Localisation :Tours (37)
w3c autorisent le php dans du html ? Je doute :huh:

#18
Athar

    Glandeur d'une galaxie très très lointaine...

  • Animateur
  • 2071 messages
  • Localisation :France, Loire
Heu, au final, toute page finit en "HTML", PHP ou non, le W3C analyse la page générer par le serveur web, et non le code PHP, traiter en amont.

Du coup, peu importe l'extension pour le W3C je pense, ce qui l'intéresse, c'est la syntaxe HTML (les balises tout sa). Après, je sais qu'il y a plusieurs niveau de validation (STRICT pour le plus commun, les autres je ne sais plus de mémoire), et peut être dans ce cas, il peu y avoir une règle sur le nommage des pages web au niveau des extensions.


PC de bureau/fixe (jeux, développement, etc.)
- Home made (i7-4960 (3.6GHz), 32Go DDR3 1866MHz (4x8Go), GTX980 4096Mo, 7 Intégrale x64, RAID0 SSDx2 256Go (512Go - Samsung 840 Pro) + SSD "Datas Windows" Crucial MX100 512Go et 2x SSD Crucial MX100 512Go (Jeux) + RAID0 2x1To (2To) + WD Velociraptor 150Go, écrans 2x Samsung SyncMaster T27A300 (27"), Clavier Corsair Gaming K95 RGB et souris G502 Logitech, alimentation Corsair 1200W 80plus gold)
Portable(s) (Travail)
- Asus G751JY-T7004H (Intel Core i7-4710HQ, 16 Go DDR3-L, SSD m.2 Samsung 256 Go + HDD 1 To 7200RPM, 17.3" LED Mat, NVIDIA GeForce GTX 980M 4Go GDDR5)
- HP EliteBook 8570w pour le travail (Intel Core i7-3630QM, 32 Go DDR3, SSD Samsung Pro 240Go, 15.6" Mat, NVIDIA Quadro K1000M 2Go GDDR3)
Serveur(s) (de stockage principalement)
- Home made MegaNAS (NAS v2) (Intel Core2Quad QX9300 (2.50GHz), 4Go DDR3 1333MHz (2x2Go), Carte graphique 7300LE, 1x RAID10 11To + 4x 2To + 2x 3To + 1x 1.5To + 2x 750Go (env. 28To), alim CoolerMaster Real Power Pro 850W)
- ESXi/Passerelle réseau FW (MB Tyan S5510, Intel Xeon E3-1230v2 (3.30GHz), SSD 30Go (uniquement pour l'OS ESXi), 2x1To pour les DataStores, alim Corsair HX650 80PLUS Gold)
Image IPB


#19
Vinky

    Responsable Graphique

  • Administrateur
  • 6011 messages
  • Localisation :Tours (37)

Voir le messageAthar, le 28 September 2011 - 22:57:11, dit :

Après, je sais qu'il y a plusieurs niveau de validation (STRICT pour le plus commun, les autres je ne sais plus de mémoire), et peut être dans ce cas, il peu y avoir une règle sur le nommage des pages web au niveau des extensions.
C'est sur ce point que je me pose la question ;)

#20
Athar

    Glandeur d'une galaxie très très lointaine...

  • Animateur
  • 2071 messages
  • Localisation :France, Loire
Je regarderais à l’occasion, mais je doute que cela ait un impact.
Au final, le navigateur reçoit un "fichier texte" contenant le code HTML. Peut importe l'extension, celle-ci est surtout utilisé du coter serveur et non client.
Pour le W3C, lors du processus de validation, ce dernier fait une requête HTTP, et reçoit ce que tout navigateur récupère avec l'adresse. Ensuite, ils analysent tout simplement le contenu de ce fichier (en tout cas, c'est comme cela que je l'imagine^^ a vérifié).


PC de bureau/fixe (jeux, développement, etc.)
- Home made (i7-4960 (3.6GHz), 32Go DDR3 1866MHz (4x8Go), GTX980 4096Mo, 7 Intégrale x64, RAID0 SSDx2 256Go (512Go - Samsung 840 Pro) + SSD "Datas Windows" Crucial MX100 512Go et 2x SSD Crucial MX100 512Go (Jeux) + RAID0 2x1To (2To) + WD Velociraptor 150Go, écrans 2x Samsung SyncMaster T27A300 (27"), Clavier Corsair Gaming K95 RGB et souris G502 Logitech, alimentation Corsair 1200W 80plus gold)
Portable(s) (Travail)
- Asus G751JY-T7004H (Intel Core i7-4710HQ, 16 Go DDR3-L, SSD m.2 Samsung 256 Go + HDD 1 To 7200RPM, 17.3" LED Mat, NVIDIA GeForce GTX 980M 4Go GDDR5)
- HP EliteBook 8570w pour le travail (Intel Core i7-3630QM, 32 Go DDR3, SSD Samsung Pro 240Go, 15.6" Mat, NVIDIA Quadro K1000M 2Go GDDR3)
Serveur(s) (de stockage principalement)
- Home made MegaNAS (NAS v2) (Intel Core2Quad QX9300 (2.50GHz), 4Go DDR3 1333MHz (2x2Go), Carte graphique 7300LE, 1x RAID10 11To + 4x 2To + 2x 3To + 1x 1.5To + 2x 750Go (env. 28To), alim CoolerMaster Real Power Pro 850W)
- ESXi/Passerelle réseau FW (MB Tyan S5510, Intel Xeon E3-1230v2 (3.30GHz), SSD 30Go (uniquement pour l'OS ESXi), 2x1To pour les DataStores, alim Corsair HX650 80PLUS Gold)
Image IPB






1 utilisateur(s) en train de lire ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)