Page 1 sur 1

Problème n'arrive pas à vérifié si une URL est valide ou non

Posté : 09 sept. 2011, 10:16
par kopax
Bonjour,

J'ai fais un petit module pour faire une recherche par ID Site pour la boite dans laquel je travail.
Malheureusement, j'aimerai vérifié une condition, que l'url soit valide.
J'ai pondu une page , mais le controle de l'url renvoi toujours une erreur, voici la source

<?php
/* Correction de l'id site possible suite à faute de frappe ou copier coller */
  $search = array(' ', '.');
  $replace = array('', '');
/* Si l'id site à été posté par le formulaire, on corrige les fautes de frappes */
  if( isset($_POST['idsite']) )
  {
    $idsite = $_POST["idsite"];
    $idsite = str_replace($search, $replace, $idsite);
  }
?>
    <!-- Je crée un formulaire qui postera sur cette même page -->
    <FORM action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
      <table width="300" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td width="60" align="right" valign="middle">
            ID Site :
          </td>
          <td width="60" valign="top">
            <!-- si un idsite à déjà été poster je le garde dans la text bar -->
            <INPUT name="idsite" type="text" id="idside" value="<?php if( isset($idsite) ) echo $idsite ;?>" size="8">
          </td>
          <td>
            <input type="submit" value="Recherche" class="submit">
          </td>
        </tr>
      </table>
	</FORM>
    <?php
	  /* Si un idsite à été posté je vérifie qu'il existe bien */
      if(isset($_POST['idsite']))
	  {
	    if (!isset($url)) $url = "http://www.monsite.com/site.do?indexItem=0&idItem=".$idsite."&oldId=0"; 
	    $fp = fsockopen($url, 80, &$errno, &$errstr, 30); 
	    /* Si l'idsite n'existe pas, je renvoi un message d'erreur */
	    if (!$fp) { 
	    echo "Erreur: <B>$errstr</B> ($errno)<BR>"; } 
	    /* Si l'idsite existe, je l'affiche dans un iframe */
	    else { fputs($fp,"GET / HTTP/1.0nn"); 
	    $reponse = fgets($fp, 128); 
	    echo '<iframe src="http://www.monsite.com/site.do?indexItem=0&idItem=".$idsite."&oldId=0" width="1500" height="900" frameborder=no></iframe>';
	    fclose($fp); } 
	  }
	  /* Si aucun idsite n'a été posté j'affiche un message */
	  else
	  {
	    echo 'Module de recherche par ID site';
	  }
    ?>
Tout fonctionne correctement sauf la vérification d'url qui me renvoi ce message même quand l'url est bien valide :
Erreur: Unable to find the socket transport "http" - did you forget to enable it when you configured PHP? (5)
A noter que quand j'arrive sur la page de la boite, je dois d'abord m'authentifier et avoir le cookie bien actif sur ma session.
Si quelqu'un à une idée, vois une erreur dans la méthode merci d'avance de me faire savoir.

kopax

Re: Problème n'arrive pas à vérifié si une URL est valide ou

Posté : 09 sept. 2011, 10:27
par kopax
Autre question concernant le str_replace, mon idsite ne comporte que des chiffres, j'aimerai savoir comment faire pour supprimer toute lettres (fautes de frappes) qui peuvent être insérer dans ce champs, sans trop alourdir mon fichier.

Re: Problème n'arrive pas à vérifié si une URL est valide ou

Posté : 09 sept. 2011, 11:04
par xTG
C'est indiqué que les sockets ne sont pas configurés pour le protocole http apparemment.
Va falloir regarder ce qui se trouve dans le php.ini à ce propos. ;)

Re: Problème n'arrive pas à vérifié si une URL est valide ou

Posté : 09 sept. 2011, 11:09
par kopax
C'est indiqué que les sockets ne sont pas configurés pour le protocole http apparemment.
Va falloir regarder ce qui se trouve dans le php.ini à ce propos. ;)
En faite ma méthode est pas la bonne.
J'ai essayé avec file_get_content suite à une recommandation, le problème est que le site en question à besoin d'une connection et d'un cookie.
Je ne peux donc pas demandé au serveur de vérifié l'url pour moi, étant donné que je veux pas stocker de mdp ou de cookie dans le code ou sur le serveur.

Existe-il une autre méthode plus approprié ?

Re: Problème n'arrive pas à vérifié si une URL est valide ou

Posté : 09 sept. 2011, 15:20
par xTG
Tu peux utiliser dans ce cas curl, cela gère les cookies. :)