8792 sujets

Développement web côté serveur, CMS

Bonjour, je ne maîtrise pas bien le PHP (bon vous avez gagné, pas du tout) mais en partant d'un lecteur de midi aléatoire, j'ai tenté d'ouvrir une page PHP aléatoire depuis mon autre site ...

Voici mon code de départ
<?php
$repertoire='./snd/';

$compteur=0;
$handle=opendir($repertoire);

while ($fichier = readdir($handle))
{
   if (strlen($fichier)>3)
     {
       $extension= strtolower(substr( strrchr( $fichier, "." ), 1 ));

       if ($extension=="mid")
           {
              $compteur++;
              $fichmidi[$compteur]=$fichier;
           }
       }
   }
closedir($handle);

if ($compteur>0)
    {
    srand((double)microtime()*1000000);
    $aleatoire=rand(1,$compteur);

    if (ereg("MSIE", $HTTP_USER_AGENT))
        {
        echo "<bgsound src='$repertoire$fichmidi[$aleatoire]' LOOP=INFINITE>";
        }
        else
        {
        echo "<EMBED src='$repertoire$fichmidi[$aleatoire]' AUTOSTART=true
HIDDEN=true loop=true></EMBED>";
  }
    }
?>


Et voici après transformations Smiley confuse :
<?php
$repertoire='http://monautresite/pagesPHP/';

$compteur=0;
$handle=opendir($repertoire);

while ($fichier = readdir($handle))
{
   if (strlen($fichier)>3)
     {
       $extension= strtolower(substr( strrchr( $fichier, "." ), 1 ));

       if ($extension=="php")
           {
              $compteur++;
              $fichmidi[$compteur]=$fichier;
           }
       }
   }
closedir($handle);

if ($compteur>0)
    {
    srand((double)microtime()*1000000);
    $aleatoire=rand(1,$compteur);

    if (ereg("MSIE", $HTTP_USER_AGENT))
        {
        echo "<a Href='$repertoire$fichmidi[$aleatoire]'>page aléatoire</a>";
        }
    }
?>

Sauf que, comme vous pouvez vous en douter ... ça n'a pas fonctionné... Smiley help (c'était sensé afficher un lien une page PHP, dont le nom contient de plus de trois lettres, depuis un autre site).

Si quelqu'un avait l'amabilité, le temps, et l'envie de bien pouvoir m'indiquer le(s) erreur(s) ... ça me serait d'une aide précieuse. ( Smiley prie )
Merci d'avance...
Modifié par Yoddha (16 Aug 2006 - 09:18)
Salut,

J'ai pas regardé dans le détail, mais quelques petites choses:

1) essaie d'afficher ce que te renvoie la fonction opendir pour vérifier que ton chemin est bon

2) pour le parcours du répertoire
EDIT: ceci est vrai pour PHP >= 4.0.0-RC2
reference
a écrit :

Tiré du Manuel PHP
/* Ceci est la façon correcte de traverser un dossier. */
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}

/* Ceci est la MAUVAISE façon de traverser un dossier. */
while ($file = readdir($handle)) {
echo "$file\n";
}


3)
if (ereg("MSIE", $HTTP_USER_AGENT))

que se passe t'il si on n'a pas IE ?

j'espère que ça pourra t'aider
a+
Modifié par dunjl (10 Aug 2006 - 20:13)
Administrateur
Bonjour et bienvenue Yoddha,

Pour savoir un petit peu ce qui se passe dans les variables, tu peux afficher leur contenu à coup de echo, print_r et var_dump. A afficher entre des balises <p>...</p> ou <pre>...</pre>. Un exemple:
a écrit :
<?php
function p($texte) {
echo '<p>';
var_dump($texte);
echo "</p>\n";
}

$repertoire='http://monautresite/pagesPHP/';
$compteur=0;

p($HTTP_USER_AGENT);
$handle=opendir($repertoire);
p($handle);

while ($fichier = readdir($handle))
{
if (strlen($fichier)>3)
{
$extension= strtolower(substr( strrchr( $fichier, "." ), 1 ));
if ($extension=="php")
{
$compteur++;
$fichmidi[$compteur]=$fichier;
}
}
}
closedir($handle);
p($fichmidi);

if ($compteur>0)
{
srand((double)microtime()*1000000);
$aleatoire=rand(1,$compteur);

if (ereg("MSIE", $HTTP_USER_AGENT))
{
echo "<a href='$repertoire$fichmidi[$aleatoire]'>page aléatoire</a>";
}
}

?>

EDIT: Désolé pour l'indentation: c'est pas moi c'est PSPad Smiley rolleyes
J'ai rajouté une function p(){} et 3 appels à celle-ci p($blabla);
Modifié par Felipe (10 Aug 2006 - 20:53)
Modérateur
bonjour,

ou ce trouve le script listant le repertoire ?

car si tu essaie de lister un repertoire "a distance" cela ne fonctionnera pas, tu ne peut lister qu'un repertoire que sur le "domaine" ou se trouve le script<edit>sauf acces ftp peut-etre ?</edit> , (ou bien je me trompe et cela serait une faille de securité ?).

Je pense donc que ton script avec la fonction "opendir() puis readdir() doit se trouver sur le site ou est le repertoire a lister .

as tu essayer le script sur le site ou se trouve ton repertoire a lister ?

++
Modifié par gcyrillus (10 Aug 2006 - 21:36)
Je dois dire que je ne m'attendais pas à autant de réponses ...


En fait, non, je ne peux pas essayer directement sur le site d'où je tire mes pages PHP ... d'où la complexification de l'affaire.
Felipe a écrit :
Pour savoir un petit peu ce qui se passe dans les variables, tu peux afficher leur contenu à coup de echo, print_r et var_dump.
résultat :
string(80) "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser)" 

bool(false) 

NULL
Administrateur
Oui donc ce que craignait gcyrillus et dunjl en 1) est probablement exact vu que opendir renvoie FALSE Smiley ohwell
Heureusement d'ailleurs parce que si l'on pouvait lire les répertoires comme ça à distance, ce serait une belle faille du serveur.

Est-ce que tu as accès à la liste des fichiers dans ton navigateur, d'une manière ou d'une autre? Je pense en particulier à ce genre de listage de répertoire (pas Google mais les résultats en lien Smiley smile )? Si oui, il y aura alors un moyen. Si non, alors aucun moyen simple de savoir quels fichiers sont disponibles sans le demander au webmaster du site, ça tombe bien c'est lui le propriétaire de ces contenus.
Non, je n'ai pas accès à l'index, j'avais mis un index.htm pour éviter que les pages soient visibles.
Et le webmaster est toujours occupé, peu disponible ou enclin à effectuer des modifications, d'où ce procédé ... je crois même qu'il est en vacances ...

Bon, ce n'est pas grave, je me doutais que ce ne serait pas simple, et je m'attendais à ce que ça soit impossible...
Merci beaucoup à tous :o)