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

Eléphant du PHP | 116 Messages

09 sept. 2011, 10:16

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
Modifié en dernier par kopax le 09 sept. 2011, 10:39, modifié 1 fois.

Eléphant du PHP | 116 Messages

09 sept. 2011, 10:27

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.

ViPHP
xTG
ViPHP | 7331 Messages

09 sept. 2011, 11:04

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. ;)

Eléphant du PHP | 116 Messages

09 sept. 2011, 11:09

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é ?

ViPHP
xTG
ViPHP | 7331 Messages

09 sept. 2011, 15:20

Tu peux utiliser dans ce cas curl, cela gère les cookies. :)