dogui Posté 30 Août 2007 Posté 30 Août 2007 Bonjour, j'ai lu dans un article qu'il était possible dans spip 1.9 de metter du code php et que celui ci est interprété. ça me semble bizarre puisque c'est des pages html... est ce vrai? Et comment dois je faire ! je vous montre mon code qui ne marche pas: <div id="newsletter">Restez informé, entrez votre mail: <? php /*Connection à la bdd*/ $host = "xxxxxxx"; // voir hébergeur $user = "xxxxxx"; // vide ou "root" en local $pass = "xxxxxxx"; // vide en local $bdd = "xxxxxxxx"; // nom de la BD $table=" pmnl_email"> // nom de la table // connexion// @mysql_connect($host,$user,$pass) or die("Impossible de se connecter"); @mysql_select_db("$bdd") or die("Impossible de se connecter"); // Requete $query = "INSERT INTO $table(`email`,`list_id`, `hash`)"; $query .= " VALUES('$mail','0', '1')"; $result = mysql_query($query); mysql_close(); ?> <form method="post" action="sommaire.html"> <input type="text" name="email" class="champs_newsletter" /><input type="submit" name="submit" />> </div> Merci de me donner un coup de main car là je suis vraiment bloqué... merci! Sinon si vous avez un script de newsletter tout simple avec juste un champ texte et un bouton valider pour entrer un adresse mail, je suis preneur ;-) !! Merci
Fuleran Posté 30 Août 2007 Posté 30 Août 2007 Je ne comprend pas ta question : Est-ce que tu veux mettre du PHP dans un squelette (possible sans problème) ou dans le corp d'un article (possible mais risqué) ? Sinon, pour ta newsletter je te conseille de regarde wanewsletter. Tu trouvera même sur spip-contrib des exemples d'intégration dans spip.
klelugi Posté 30 Août 2007 Posté 30 Août 2007 Bonjour, Spip permet effectivement d'inclure du php dans les squelettes HTML, tu doit faire cela de la même façon que tu le ferais dans un fichier php. Néanmoins, je te déconseille vivement d'inclure tes identifiants de connection dans tes squelettes html, ces pages pouvant être consultées dans ton répertoire de squelette et le code source étant affichable, tout le monde aurait accès à tes identifiants... Fais donc un appel a un include pour éviter ce problème. Sinon si les tables SQL que tu cherches à consulter sont dans la même bdd que tes tables spip tu devrais assez facilement pouvoir utiliser la connection déjà ouverte par spip et passer un spip_query pour envoyer la requête à ta bdd. Regardes un peu le code source des formulaires pour t'inspirer des code d'insertion en base fait par Spip.
Dan Posté 30 Août 2007 Posté 30 Août 2007 Néanmoins, je te déconseille vivement d'inclure tes identifiants de connection dans tes squelettes html, ces pages pouvant être consultées dans ton répertoire de squelette et le code source étant affichable, tout le monde aurait accès à tes identifiants... Il est simple de mettre un fichier .htaccess dans le répertoire comportant les squelettes, avec une seule ligne: Deny from all Dans ce cas les squelettes ne peuvent pas être visualisés. Voir: http://www.webmaster-hub.com/publication/s...es/article.html par exemple Dan
Cariboo Posté 30 Août 2007 Posté 30 Août 2007 En fait on peut mettre du code php dans les squelettes SPIP depuis la première version, car les squelettes spip se codent en php, même si pour des raisons étranges les premiers développeurs ont affublé les squelettes de l'extension .html ! Donc cela marche dans la version 1.9, mais aussi en 1.8, en 1.7, en 1.6 etc...
captain_torche Posté 30 Août 2007 Posté 30 Août 2007 Dans ce cas les squelettes ne peuvent pas être visualisés. Si on veut toutefois donner l'accès (pour des raisons pédagogiques) au dossier squelettes, on peut forcer apache à interpréter les commandes PHP des fichiers html avec la syntaxe suivante : AddType application/x-httpd-php .html
klelugi Posté 30 Août 2007 Posté 30 Août 2007 Il est simple de mettre un fichier .htaccess dans le répertoire comportant les squelettes, avec une seule ligne: Deny from all Dans ce cas les squelettes ne peuvent pas être visualisés. Voir: http://www.webmaster-hub.com/publication/s...es/article.html par exemple Dan IL est vrai que placer un htaccess dans le repertoire squelettes est plus pratique pour éviter le regard des indiscrets. Sachant toutefois que le répertoire squelettes de Spip est aussi assez souvent utilisé pour accueillir des fichiers JS et CSS je conseillerais de placer un htaccess plutôt comme ceci : RewriteEngine onRewriteBase /RewriteRule ^[^\.]*\.html.* - [F] Qui empechera l'accès uniquement aux fichiers html.
dogui Posté 31 Août 2007 Auteur Posté 31 Août 2007 (modifié) Merci pour toutes vos réponses! je vais opter pour sécuriser le tout par un .htaccess! Mais j'ai encore une erreur avec mon code php dans mon squelette: erreur dans le squelette Parse error: parse error, unexpected T_VARIABLE in /xxxxxx/xxxxxxx/xxxxxx/ecrire/public.php(173) : eval()'d code on line 57 Je sais que vous n'avez pas que ça à faire mais si vous pouviez jeter un coup d'oeil vite fait à mon code car je rame dessus: <div id="newsletter">Restez informé, entrez votre mail: <? php /*Connection à la bdd*/ $host = "xxxxxxx"; // voir hébergeur $user = "xxxxxxx"; // vide ou "root" en local $pass = "xxxxxxx"; // vide en local $bdd = "xxxxxxxx"; // nom de la BD $table="pmnl_email"> // nom de la table // connexion// @mysql_connect($host,$user,$pass) or die("Impossible de se connecter"); @mysql_select_db("$bdd") or die("Impossible de se connecter"); // Requete $query = "INSERT INTO $table(`email`,`list_id`, `hash`)"; $query .= " VALUES('$mail','0', '1')"; $result = mysql_query($query); ?> <form method="post" action="squelettes/sommaire.html"> <input type="text" name="mail" class="champs_newsletter" /> <input type="submit" name="submit" />> </form> </div> J'ai un doute sur mon action que j'utilise pour traiter le formulaire. Et autre question dois je fermer ma connection mysql? car j'ai peur que par la meme ça ferme ma connection avec spip! Merci Modifié 31 Août 2007 par dogui
dogui Posté 31 Août 2007 Auteur Posté 31 Août 2007 Bon finalement en simplianf au maximum avec le code suivant j'ai plus de message d'erreur... mais ça n'enregistre rien dans la bdd: <div id="newsletter">Restez informé, entrez votre mail: <?php // Requete $query = "INSERT INTO $table(`email`,`list_id`, `hash`)"; $query .= " VALUES('$mail','0', '1')"; $result = spip_query($query); ?> <form method="post" action="#SELF"> <input type="text" name="mail" class="champs_newsletter" /> <input type="submit" name="submit" />> </form> </div>
dogui Posté 31 Août 2007 Auteur Posté 31 Août 2007 Finalement j'ai réussi à me défaire de tout ça! Le dernier problème qui me reste est le fait que chaque fois que quelqu'un recharge la page ou la recalcule ça me met un champ vide dans la base de données... ça vient de quoi? Pourtant j'ai une fonction javascript qui me permet de faire une vérification sur le mail normalement mais j'ai l'impression que ça l'oublie! je vous montre mon code: <div id="newsletter"> <?php $query = "INSERT INTO pmnl_email(`email`,`list_id`, `hash`)"; $query .= " VALUES('$mail','1', '')"; $result = spip_query ($query); ?> <form method="post" action="#SELF" name="formulaire" onsubmit="return validation();"> Restez informé, entrez votre mail: <input type="text" name="mail" class="champs_newsletter" /> <input type="submit" value=">" /> </form> </div>
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant