Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Bonjour,
Je me suis lancer dans la création d'un script d'annuaire, mais le je tombe sur un petit problème, je voudrait verifier la validité d'une adresse web, la verification me dis sistématiquement que l'adresse n'est pas valide, même si elle l'est!!
J'ai essayé avec plusieurs méthode, en voisi une a titre d'exemple :
if(eregi('^http(s)?://[_a-z0-9-]+(\.[_a-z0-9-]+)+(\.[a-z0-9-]+)$', $url_site))//si l'url est valide
{
if(mysql_query("INSERT INTO site_propulsite VALUES('', '$prenom_site', '$mail_site', '$titre_site', '$url_site', '$description_courte', '$description_longue_site', '$clic_site', '$note_site', '$nombre_vote_site', '$newlester', '$affiche_site')"))
{
$enregistrement_ok =
'index.php?form=ok&'.
$url_submit.
'&';
echo '<meta http-equiv="refresh" content="0; URL='.$enregistrement_ok.'">';
}
}cela fait plusieurs jour que je bloque la dessus, si qq1 pourrait me corriger se petit bout de code ou bien me donner une autre solution, sa serait simpas!
Cette solution , c'est bien, sa verifie la sintaxe de l'adresse web, dans un premier temps c'est bien, mais ensuite, je voudrait verifier si l'adresse existe bien, je sait que s'est possible, mais je ne vois pas trop comment faire, j'ai entendu parler de fopen() mais cela ne fonctionne pas pour des adresse provenant d'une adresse distante, des qu'il y a un "http" dans la fonction, sa me renvoi une erreur!!!
Sinon, j'avais penser a uploader l'url, et si l'upload fonctionne, sa me renvoi true, c'est bon, si elle me renvoi false, c'est que l'adresse n'existe pas! mais il n'y aurait pas un risque de sécurité à faire cela?
Encors un question, commet verifier automatiquement la présence d'un lien de retour? j'ai aussi penser en uploadant la page, puis en l'analisant avec un genre de moteur de recherche, j'aurait juste besoin d'une piste merci! ![]()
Merci de vos réponse
Dernière modification par dechichulien (24-02-2008 11:33:45)
Hors ligne
hello,
tu dois avoir un problème dans ton expression régulière (et là, je suis moins calé)
pour fopen, c'est bien ça. Tu peux aller voir le manuel http://fr.php.net/fopen pour vérifier que tu utilises les bon paramètres.
pas bien compris ton histoire de lien de retour !
++
Hors ligne
merci de ta réponse,
Pour l'expression régulière, c'est bon sa marche, mais pour le fopen(), sa ne marche pas, dès qu'il y a une url de type http://, c'est a dire d'un autre site, je reçoi un message d'erreur de type gci ou cgi cannot modifi header paramettre ou un truc du genre, je ne sait plus, c'est surement due a la configuration de mon serveur!
N'y a t'il pas un autre moyen de verifier qu'une url existe? même une piste, je ne demande pas un script complet, juste une petite piste!
[cote]pas bien compris ton histoire de lien de retour ![/cote]
Je veut verifier automatiquement la présence d'un lien de retours, pour pouvoir effectuer une validation automatique des sites, mais je ne vois pas comment, avec fopen() et explode(), je pence que sa aurait été possible mais vue que fopen() ne fonctionne pas, je n'ai pas non plus d'idée!!
Merci de votre aide
Hors ligne
Salut
Et si au début de ta page tu rajoutes cette commande php ci?
<?php
ini_set ('allow_url_fopen', 'ON');
?>De maniere à modifier la valeur de fopen si dans ta config si elle est a OFF ( a vérifier dans le phpinfo de ton serveur), le temps du script.
Attention si tu es chez un hébergeur, certains n'autorisent pas la modification des parametres php.
Bonne journée
Hors ligne
Merci encor de ton aide, je croi que je vais laisser tomber pour le moment, comme je l'ai dis plus haut, c'est pour un script d'annuaire que je compt mettre en téléchargement, il faut que sa marche sur tout les serveur, si sa ne marche pas sur le mien, sa marchera pas sur d'autre serveur non plus, et personne ne voudra du script, il n'auront cas verifier les liens manuellement ces faignant lol!!
a moin que je me soit tromper?
Voila le code que j'ai fait pour un teste :
<?php
ini_set ('allow_url_fopen', 'ON');
$handle = fopen("http://www.propulsite.com/", "r");
?>rien que avec sa, j'ai se message d'erreur :
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers.
Rien a faire, c'est toujour pareil!
La solution serait peut être de mettre l'url dans un formulaire avec un champ file :
<input name="url" type="file" />
Et ensuite, de traiter le champ comme un upload, de cette façon, si l'upload échou c'est que l'url n'exsiste pas, mais il y a deux chose qui me plaise pas dans cette solution, le bouton parcourir ne sert a rien, et a mon avis je ne peut pas mettre un champ texte normal pour se genre de chose, et ensuite, si un petit malin s'amuse a mettre un code dans sa page pour hacker le site, sa serait pas trop cool non?
à moin que un htmlspecialchars() suffirait pour éviter se genre de problème?
Merci encors de ton aide
Hors ligne
Salut Julien
en cherchant un petit peu avec ton message d'erreur, j'ai trouvé ceci :-)
http://www.asp-php.net/tutorial/asp-php … php?page=3
et la dedans il y a ceci qui pourrait te concerner ...
Bug
Il est arrivé à plusieurs personnes d'avoir un bug affichant ce message d'erreur :
L'application CGI spécifiée a mal fonctionné en ne renvoyant pas de jeu complet d'en-têtes HTTP. Les en-têtes renvoyés sont :...
ou en anglais :
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:...
C'est un bug de PHP, il est connu et présent dans la liste des bugs depuis 2001 (je ne suis pas remonté avant) et concerne bien l'utilisation de PHP avec IIS, et arrive parait-il aléatoirement.
Les causes
L'utilisation conjointe dans un script d'une connection à une base de données avec une commande d'header : location, avec PHP en module CGI.
Les remèdes
1. Dans votre PHP.ini, ajouter une ligne comme suit :
cgi.rfc2616_headers = 1;
A 0 par défaut, celà spécifie à PHP d'envoyer des headers compatibles avec Apache et *normallement* les autres serveurs web. Mis à 1, celà spécifie d'envoyer des headers répondant strictement à la norme RFC2616.
Par contre il se peut maintenant que les demandes d'authentification ne fonctionnent plus.
2. Utiliser PHP en module ISAPI (au lieu de CGI), pour çà :
- dans le panneau de gestion des sites web, clic droit sur un site puis propriétés du site
- onglet "Répertoire de base" puis "Configuration" (vers le bas)
- onglet "Mappages" puis "Ajouter"
- pour l'exécutable, cliquez "Parcourir", en bas dans le type de fichiers, mettez "bibliothèque dynamique : dll", puis allez dans votre répertoire d'installation de PHP, puis dans le répertoire "sapi" et prenez "php4isapi.dll"
- dans "extension", mettez ".php"
- validez et celà devrait fonctionner!
Je ne suis pas sur que ça puisse t'aider directement, mais ça devrait te donner une piste d'ou ça cloche, a supposer évidemment que tu sois hébergé sous windows server.
Désolé de ne pas pouvoir t'aider plus
Hors ligne
Merci de ta réponse,
ok c cool, maintenant je sait d'ou vien l'erreur, mais le problème, c'est que je n'est pas acces au PHP.ini vu que mon site est ébergé chez un serveur distant, et je n'est pas acces a ses fichier!
et je voudrait que sa fonctionne directement dès l'installation du script!
Merci quand même, mais je l'aisse tomber, j'ajouterais peut être cette fonction dans une mise a jour!
merci
Hors ligne