8791 sujets

Développement web côté serveur, CMS

Bonjour à chacun et chacune,

ben voilà, j'ai un livre d'or (je vous préviens tout de suite, je ne suis pas assez balèze en php pour avoir fait moi-même son code...), j'ai ajouté un champs "site web"avec une value "http://", donc ça c'est de moi. Bon j'ai réussi après plusieurs tentatives de mettre en lien ce site que le posteur aura rentrée et quand le message s'affiche ds le livre, le pseudo du posteur est en lien ac son site, bon jusque là tout va bien... sauf que, j'ai oublié de lui ajouter une petite instruction à ce $url, c'est que quand cette fonction est vide (ici, puisque j'ai mon value en "http://" elle ne serai pas complètement vide) j'enlève le lien du posteur ! (aussi non, ça m'envoie à la page "http://" !!...), donc j'ai commencé un petit chemin, le voici:

if (trim($url)=="http://")
{
		//donc c'est là qu'il faudrait que je mette mes instruction pour $url "vide", mais snif, j'ai pas trouvé sur google...
}


donc si vous avez une petite soluce, je suis pas contre Smiley smile
Modifié par Klak (20 Dec 2008 - 09:26)
Salut,

Klak a écrit :

c'est que quand cette fonction est vide (ici, puisque j'ai mon value en "http://" elle ne serai pas complètement vide) j'enlève le lien du posteur !
D'après ce que j'en comprends tu devrais plutôt ne pas faire le lien si l'url est "vide" :
<?php
$url = !empty($_POST['url']) ? trim($_POST['url']) : '';
if (($url != '') && ($url != 'http://')) {
    // Je fais le lien entre l'url et le posteur
}
Ne vaudrait-il pas mieux ne rien mettre par défaut dans le champs, et ensuite, si le champs n'est pas vide, on teste s'il commence par http://

Si oui, on ne fait que mettre le lien sur le pseudo, si non, on rajoute http:// au début, puis on met le lien ?
Klak a écrit :
non... désolé, aucun changements
Ce serait plus simple en voyant ton code...
mistike a écrit :
Ne vaudrait-il pas mieux ne rien mettre par défaut dans le champs, et ensuite, si le champs n'est pas vide, on teste s'il commence par http://

Si oui, on ne fait que mettre le lien sur le pseudo, si non, on rajoute http:// au début, puis on met le lien ?

oui, bonne idée Smiley smile (mais je ne sais pas le faire Smiley confused )

Heyoan a écrit :
Ce serait plus simple en voyant ton code...

ben... c'est celui que tu m'as donné Smiley eek
Modifié par Klak (20 Dec 2008 - 13:07)
Klak a écrit :

ben... c'est celui que tu m'as donné Smiley eek
Je veux bien sûr parler de tout ton code Smiley murf .
ok, euh... c'est un peu long...

bon, voici message.php

<?php
// Pour contrer les spams automatiques qui polluent le web, on va faire une petite regex
if(preg_match("!http|/|www|\.[A-Za-z]{2,4}!is",@$_POST['message']))
{
	echo "<blockquote><h1>Anti-spams</h1>
		<p><em>les URL et les slashs sont interdits. Pensez aussi à mettre un espace après un point.</em></p></blockquote>\n";
	exit;
}
// Mettons le (futur) fichier dans une variable.
$commentaires="messages.txt";
 
// assignons nos 3 variables du formulaire, et on en profite pour les protéger des balises HTML
$pseudo=htmlentities($_POST['pseudo']);
$message=htmlentities($_POST['message']);
$url=htmlentities($_POST['url']);
//Pensons au retour à la ligne et aux stripslashes pour la variable $message
$message=stripslashes(nl2br($message));
 
// On met en place quelques conditions pour les cellules (nom et message)
// On vérifie avant tout si le fichier existe : si ce n'est pas le cas, on le crée
if(!is_file($commentaires))
{
        $verif=@fopen($commentaires,"w+");
}
$url = !empty($_POST['url']) ? trim($_POST['url']) : '';

if (($url != '') && ($url != 'http://')) {

    // Je fais le lien entre l'url et le posteur

}
// On vérifie que le login ou le message ne sont pas vide
elseif (trim($message)=="" || trim($pseudo)=="")
{
        echo "Vous devez remplir tous les champs ! ";
        
        // On sort du script !
        exit;
}

$url = !empty($_POST['url']) ? trim($_POST['url']) : '';

if (($url != '') && ($url != 'http://')) {

    // Je fais le lien entre l'url et le posteur

}
// Après ces quelques vérifications d'usage, on passe à l'exécution de ce formulaire
         
        // Si ok, on ouvre en écriture-enregistrement du fichier message.txt
        $verif=@fopen($commentaires,"r+");
                
        // On analyse les anciennes données et on les stocke
        $stock=@fread($verif,filesize($commentaires));
        
        // On met la date dans une variable
        $date=date ("d/m/Y à H:i");
		
        
        // On paramètre le tout dans la variable $opinion
        $opinion="<b><a href=".$url." >".$pseudo."</a></b> a écrit le : ".$date."  <br />\n".$message."<br />\n<hr />";
        
        //On remet le curseur du fichier en début de ligne
        rewind($verif);
        
        //On insère le nouveau commentaire
        fputs($verif,$opinion." \n".$stock);
        
        //On clôt le fichier
        fclose($verif);
        
        // On affiche le tout
        readfile($commentaires);
 
 
?>
Ben... à quel moment fais-tu le lien entre l'url et le posteur ? Smiley rolleyes


Edit: je ne comprends pas le test if ($url !='' ...)
elseif (trim($message...


d'autre part il vaut mieux utiliser htmlspecialchars que htmlentities et il ne sert de toute façon qu'au moment de réafficher une variable (pas avant de l'enregistrer en base ou dans un fichier)
Modifié par Heyoan (20 Dec 2008 - 13:52)
Klak a écrit :


non... heu, c'est au milieu du code Smiley cligne
Au milieu du code je vois 2 fois un commentaire :
// Je fais le lien entre l'url et le posteur
qui ne risque pas de faire quoi que ce soit...

Ce serait peut-être une bonne idée de revoir les bases de PHP. Smiley murf
je vous l'avez dit, je suis pas super fort en php Smiley biggol


okok, en plus je suis distrait...

bon, ben zut, je l'ai plus...j'ai du le remplacer par ce que j'ai colé, et pas moyen de le récupérer (heureusement que c'est pas grave)


zut, merci en tout cas Smiley sweatdrop
Sinon une petite suggestion : les commentaires dans un fichier c'est un peu tout pourri... il faudrait les stocker dans une base de données. Et en attendant d'apprendre à le faire tous les CMS (WordPress ou autre) font ça très bien sans avoir besoin de connaître PHP.