[RESOLU] index.php page perso Free

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] index.php page perso Free

Re: [RESOLU] index.php page perso Free

par @rthur » 30 avr. 2019, 12:04

Idée toute bète,

si tous le site est derrière un captcha, est-ce que cela empèche les bot de moteur de recherche ? même ceux qui ne prète aucune attention aux balises meta ou robot.txt ?
Oui, et même mieux si tu mets tous le site derrière un login/mdp, même si c'est le même pour tous les utilisateurs.

Ça se fait très simplement dans le .htaccess en ajoutant un fichier .htpasswd qui contiendra login et mot de passe.
http://les.pages.perso.chez.free.fr/le- ... s-perso.io


Même si tu as des utilisateurs non experts (qui ne voudront pas taper un login/mdp, tu pourras leur transmettre les identifiants dans le lien qu'ils auront juste à cliquer comme ceci http://LOGIN:[email protected]

Re: [RESOLU] index.php page perso Free

par Spols » 30 avr. 2019, 09:33

Idée toute bète,

si tous le site est derrière un captcha, est-ce que cela empèche les bot de moteur de recherche ? même ceux qui ne prète aucune attention aux balises meta ou robot.txt ?

Re: index.php page perso Free

par GeGaX » 29 avr. 2019, 13:57

Yep :)
Merci pour tout je passe en résolu.
J'ai préféré tout mettre (code) ça pourra peut être servir à un autre noob (comme moi) :wink:

Re: index.php page perso Free

par @rthur » 29 avr. 2019, 13:54

Je t'ai indiqué d'utiliser la variable $_SERVER['REQUEST_URI'] pour récupérer l'url en erreur ;-)

Re: index.php page perso Free

par GeGaX » 29 avr. 2019, 13:49

Bonjour @rthur,
J'ai galéré mais j'arrive à quelque chose de correct même si ce n'est pas parfait (on peut toujours faire mieux).

# htaccess
# PHP v5.6.34
<IfDefine Free>
    php56 1
</IfDefine>

# Directory protection
Options -Indexes

# .htaccess protection
<Files ".htaccess">
    Order Deny,Allow
    Deny from all
</Files>

# Error 404
ErrorDocument 404 /404.php

# code pour log 404
    // Page / Folder / File requested
    $request = $_SERVER["REQUEST_URI"];
    if (empty($new_address)) {
        // Select path log file
        $file = $_SERVER["DOCUMENT_ROOT"].'/404.txt';
        // Format date, hour, time
        $date_hour = date("Y-m-d H:i:s", time());
        // Infos of the request
        $ip_request = $_SERVER["REMOTE_ADDR"];
        $port_request = $_SERVER["REMOTE_PORT"];
        $text = "\n".'Error 404 => '.$date_hour.' => Request : '.$request.' => IP: '.$ip_request.' => Port: '.$port_request;
        // Add $text in $file
        $fp = fopen($file, "a+");
        fputs($fp, $text);
        fclose($fp);
        // Do not work at Free.fr
        //$referer = $_SERVER["HTTP_REFERER"];
        //$ip_client = $_SERVER["HTTP_CLIENT_IP"];
        //$ip_forwarded = $_SERVER["HTTP_X_FORWARDED_FOR"]
    };

# 404.txt
Error 404 => 2019-04-29 13:31:29 => Request : /DossierB/ => IP: aaa.bbb.ccc.ddd => Port: 58975
Error 404 => 2019-04-29 13:31:44 => Request : /file.kmz => IP: aaa.bbb.ccc.ddd => Port: 58977
Error 404 => 2019-04-29 13:32:12 => Request : /page.php => IP: aaa.bbb.ccc.ddd => Port: 58980
Error 404 => 2019-04-29 13:32:22 => Request : /page.html => IP: aaa.bbb.ccc.ddd => Port: 58982
Error 404 => 2019-04-29 13:33:32 => Request : /DossierB/file.kmz => IP: aaa.bbb.ccc.ddd => Port: 58994
Error 404 => 2019-04-29 13:33:48 => Request : /DossierB/page.php => IP: aaa.bbb.ccc.ddd => Port: 58996
Error 404 => 2019-04-29 13:33:56 => Request : /DossierB/page.html => IP: aaa.bbb.ccc.ddd => Port: 58998

Ces 3 fonctions php ne fonctionnent pas chez Free.fr, elles doivent être désactivées ...
$referer = $_SERVER["HTTP_REFERER"];
$ip_client = $_SERVER["HTTP_CLIENT_IP"];
$ip_forwarded = $_SERVER["HTTP_X_FORWARDED_FOR"];

Le code pour le log n'est pas de moi, je l'ai trouvé sur le net et je l'ai modifié à ma sauce.
Je te remercie pour m'avoir aiguillé / conseillé pour tout ça, c'est cool :wink:

# index.php
<?php
    header("X-Robots-Tag: noindex, nofollow, noarchive");
    header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
    header("Pragma: no-cache"); // HTTP 1.0.
    header("Expires: ".gmdate('D, d M Y H:i:s', time() - 3600)." GMT"); // Proxies.
    header("Content-Type: text/html; charset=utf-8");
?>

<!doctype html>
<html>

    <head>
        <title>MonSite.free.fr</title>
    </head>

    <body>
        <style>
            body {
                background-image: url(/img/image.png);
                background-size: cover;
            }
        </style>
    </body>

</html>

# 404.php
<?php
    header("X-Robots-Tag: noindex, nofollow, noarchive");
    header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
    header("Pragma: no-cache"); // HTTP 1.0.
    header("Expires: ".gmdate('D, d M Y H:i:s', time() - 3600)." GMT"); // Proxies.
    header("Content-Type: text/html; charset=utf-8");
    
    // Page / Folder / File requested
    $request = $_SERVER["REQUEST_URI"];
    if (empty($new_address)) {
        // Select path log file
        $file = $_SERVER["DOCUMENT_ROOT"].'/404.txt';
        // Format date, hour, time
        $date_hour = date("Y-m-d H:i:s", time());
        // Infos of the request
        $ip_request = $_SERVER["REMOTE_ADDR"];
        $port_request = $_SERVER["REMOTE_PORT"];
        $text = "\n".'Error 404 => '.$date_hour.' => Request : '.$request.' => IP: '.$ip_request.' => Port: '.$port_request;
        // Add $text in $file
        $fp = fopen($file, "a+");
        fputs($fp, $text);
        fclose($fp);
        // Do not work at Free.fr
        //$referer = $_SERVER["HTTP_REFERER"];
        //$ip_client = $_SERVER["HTTP_CLIENT_IP"];
        //$ip_forwarded = $_SERVER["HTTP_X_FORWARDED_FOR"];
    }
?>

<!doctype html>
<html>

    <head>
        <title>MonSite.free.fr - 404</title>
    </head>

    <body>
        <style>
            body {
                background-image: url(/img/image_404.png);
                background-size: cover;
            }
        </style>
    </body>

</html>

Re: index.php page perso Free

par @rthur » 29 avr. 2019, 11:11

# Concernant l'erreur 404, j'aimerais savoir s'il est possible de faire un log des erreurs 404 ?

ex: MonSite.free.fr/DossierA/ est l'URL valide qui donne accès aux fichiers .kmz (mais il faut connaitre précisément cette URL.)
Si l'utilisateur test MonSite.free.fr/DossierB/ par exemple, est ce qu'il est possible que l'erreur 404 déclenche l'écriture dans un fichier .txt la date/heure, la page ou dossier demandé et d'où viens la demande ?
Dans ton .htaccess tu as juste cette ligne a ajouter :

Code : Tout sélectionner

ErrorDocument 404 /erreur404.php
Ça va rediriger tous les appels en erreur vers la page "erreur404.php" (qu'il faut donc que tu crées) ce qui te permet de personnaliser le message à afficher, mais aussi d'enregistrer dans un fichier texte ou une bdd l'url demandée qui échoue en 404 (elle est dans la variable $_SERVER['REQUEST_URI'] )

Re: index.php page perso Free

par GeGaX » 29 avr. 2019, 03:03

Bonsoir @rthur,
J'ai "bouffé" de la doc histoire de tout comprendre, la difficulté c'est que les pages perso de Free ont un Apache modelé à "leur sauce" du coup certaines choses ne fonctionne pas. (mais bon je vais pas me plaindre d'un service qui met offert gracieusement :D )

Mes "exigences" : pas de bot, pas de cache bref je veux être le plus discret et le plus sécurisé possible pour ce dossier public.

J'en arrive à ça:

# un fichier .htaccess
# Directory protection
Options -Indexes

# .htaccess protection
<Files ".htaccess">
    Order Deny,Allow
    Deny from all
</Files>

# Dans mon index.php, j'ai ces headers (j'ai viré les balises <meta ... />
    header("X-Robots-Tag: noindex, nofollow, noarchive");
    header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
    header("Pragma: no-cache"); // HTTP 1.0.
    header("Expires: ".gmdate('D, d M Y H:i:s', time() - 3600)." GMT"); // Proxies.
    header("Content-Type: text/html; charset=utf-8");

# un fichier robots.txt (merci de me l'avoir fourni)
User-agent: *
Disallow: /

Je vois pas ce que je peux faire de plus, si tu as autre chose à me soumettre je suis preneur.


# Concernant l'erreur 404, j'aimerais savoir s'il est possible de faire un log des erreurs 404 ?

ex: MonSite.free.fr/DossierA/ est l'URL valide qui donne accès aux fichiers .kmz (mais il faut connaitre précisément cette URL.)
Si l'utilisateur test MonSite.free.fr/DossierB/ par exemple, est ce qu'il est possible que l'erreur 404 déclenche l'écriture dans un fichier .txt la date/heure, la page ou dossier demandé et d'où viens la demande ?

Merci

Re: index.php page perso Free

par @rthur » 26 avr. 2019, 09:21

Si j'ajoute le fichier robots.txt, je dois supprimer la balise meta ?
Le fichier robots.txt seul suffit, mais tu peux laisser la balise méta en plus elle ne servira plus mais ça peut être une sécurité supplémentaire si un jour par mégarde tu supprimes le fichier robots.txt

Re: index.php page perso Free

par GeGaX » 26 avr. 2019, 01:06

Bonsoir @rtur,
J'ai modifié la ligne
<meta name="robots" content="none" />
en
<meta name="robots" content="noindex, nofollow" />
puisque j'ai vu ceci sur https://developer.mozilla.org/fr/docs/W ... ement/meta
Image

Visiblement "seul" google traduit correctement "none" donc je me suis dit qu'il était plus judicieux d'utiliser "noindex, nofollow".

Si j'ajoute le fichier robots.txt, je dois supprimer la balise meta ?

Re: index.php page perso Free

par @rthur » 26 avr. 2019, 00:28

Plutôt que la balise <meta> pour demander la non indexation, je te recommande de mettre un fichier robots.txt à la racine de ton site avec le contenu suivant :

Code : Tout sélectionner

User-agent: * Disallow: /
Ça indiquera aux moteurs de recherche que tous les fichiers hébergés dans cette espace ne doivent pas être indexés.


A noter que ce n'est pas une protection, si tu dois être le seul à accéder à ses fichiers, il vaut mieux mettre un filtrage par IP ou un login/mot de passe.

Re: index.php page perso Free

par GeGaX » 25 avr. 2019, 16:10

Je me répond tout seul pour l'histoire de l'affichage du tableau ... oui c'était aussi "c*n" que ça ... je sais pas pourquoi j'avais dans l'idée que c'était beaucoup plus compliqué ...
Merci @or 1 :wink:

Re: index.php page perso Free

par GeGaX » 25 avr. 2019, 15:57

echo <ul> devient echo <table>
echo <li></li> devient echo <tr><td></td><td></td><td></td></tr>
echo </ul> devient echo </table>

c'est aussi "c*n" que ça ?

Re: index.php page perso Free

par GeGaX » 25 avr. 2019, 15:52

ce qui me choque :
<font face="Verdana, Arial, Helvetica">
qui en plus n'est pas fermé. le style, c'est avec une feuille de style (css).
Merci, j'ai supprimé cette ligne je laisse le navigateur gérer les polices et je comprends mieux pourquoi dans mon éditeur </body> et </html> étaient en rouge

si vous connaissez les personnes qui doivent pouvoir accéder à cette page, il vaux mieux mettre un login / password plutôt que de compter sur les respects des balises meta.
Les fichiers contenus sur mon serveur de fichier sont des .kmz pour un overlay sur GMaps, ils doivent donc être public (sans login/pwd).
Seul (à ma connaissance) la balise meta ou le .htaccess permettent que l'indexation de la page et des liens qui s'y trouvent ne doit pas être possible. donc oui je "compte" la dessus :?


Pour l'affichage tableau, auriez vous un cours / tuto / exemple qui pourrait m'aider à mettre ça en place ? (je ne trouve rien de concret et pourtant j'en ai épluché des pages sur le net ...

Merci

Re: index.php page perso Free

par or 1 » 25 avr. 2019, 15:29

ce qui me choque :
<font face="Verdana, Arial, Helvetica">
qui en plus n'est pas fermé. le style, c'est avec une feuille de style (css).

si vous connaissez les personnes qui doivent pouvoir accéder à cette page, il vaux mieux mettre un login / password plutôt que de compter sur les respects des balises meta.

pour un tableau, il faut changer :
echo "<ul>";
echo '<li>'.$lastModified.'&nbsp;&nbsp;-&nbsp;&nbsp;<a href="'.$pathfile.'">'.$file.'</a>&nbsp;&nbsp;-&nbsp;&nbsp;('.humanFileSize($bytes).')</li>';
echo "</ul>";

index.php page perso Free

par GeGaX » 25 avr. 2019, 15:20

Bonjour,
J'ai depuis peu une page perso Free (MonServeurDeFichiers.free.fr).
Je souhaite que celle ci ne soit pas indexée par les moteurs de recherche, qu'elle me liste les fichiers disponibles et qu'on puisse les télécharger.

Je me suis donc intéressé à la balise <meta> et au php (auquel je ne connais rien mais j'épluche le manuel et le net), j'en arrive à ceci :
<?php
    header('Access-Control-Allow-Origin: *'); // ca j'en ai besoin pour autre chose mais ça ne fonctionne pas pour l'instant ...
?>

<html>

<head>
    <title>Dossier_kmz</title>
    <meta http-equiv="expires" content="0" />
    <meta http-equiv="pragma" content="no-cache" />
    <meta http-equiv="cache-control" content="no-cache, must-revalidate" />
    <meta http-equiv="Content-Language" content="fr, en" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="robots" content="none" />
</head>

<body bgcolor="#FFEEEE" text="#000066">
    <font face="Verdana, Arial, Helvetica">
        <p align=center>List of available .kmz files</p>

<?php
    function humanFileSize($bytes) {
        $bytes = floatval($bytes);
        $arBytes = array(
            0 => array(
                "UNIT" => "Mo",
                "VALUE" => pow(1024, 2)
            ),
            1 => array(
                "UNIT" => "Ko",
                "VALUE" => 1024
            ),
            2 => array(
                "UNIT" => "o",
                "VALUE" => 1
            ),
        );
        
        foreach($arBytes as $arItem) {
            if($bytes >= $arItem["VALUE"]) {
                $result = $bytes / $arItem["VALUE"];
                $result = strval(round($result, 2))." ".$arItem["UNIT"];
                break;
            }
        }
        return $result;
    }

    function mkmap($dir) {
        echo "<h4>".$dir.'/'."</h4>";
        echo "<ul>";
        $folder = opendir ($dir);
        while ($file = readdir ($folder)) {
            if ($file != "." && $file != "..") {
                $pathfile = $dir.'/'.$file;
                if(filetype($pathfile) == 'dir'){
                    mkmap($pathfile);
                } else {
                    if (strpos($file, '.km') !== false) {
                        $lastModified = date('Y-m-d H:i:s', filemtime($pathfile));
                        $bytes = filesize($pathfile);
                        echo '<li>'.$lastModified.'&nbsp;&nbsp;-&nbsp;&nbsp;<a href="'.$pathfile.'">'.$file.'</a>&nbsp;&nbsp;-&nbsp;&nbsp;('.humanFileSize($bytes).')</li>';
                    }
                }
            }
        }
        closedir ($folder);
        echo "</ul>";
    }

    clearstatcache();
    mkmap('.');
?>


</body>

</html>

# Premièrement, y'a t'il quelque chose qui ne soit pas valide / mal placé /obsolète / manquant bref quelque chose qui vous choque car ce n'est pas correctement écrit ?
# Deuxièmement, comment convertir l'affichage sous forme d'un tableau plutôt que d'une liste ?

Je prends tous conseils, merci