Aller au contenu

Insérer du php dans squelette spip


dogui

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 on
RewriteBase /
RewriteRule ^[^\.]*\.html.* - [F]

Qui empechera l'accès uniquement aux fichiers html.

Lien vers le commentaire
Partager sur d’autres sites

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é par dogui
Lien vers le commentaire
Partager sur d’autres sites

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>

Lien vers le commentaire
Partager sur d’autres sites

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>

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...