8768 sujets

Développement web côté serveur, CMS

Bonjour,
demande basique, il ne faut pas avoir honte, je ne connais pas le php mais j'ai décidé de m'y mettre avec un formulaire de contact sur mon site, parce que le besoin s'en fait ressentir. Étant entendu qu'un formulaire mailto sans php ne me convient pas.
Le formulaire en html, c'est fait, le script php qui va avec, il y en a partout. Mon problème se situe dans la mise en place de tout sur le serveur. Mon hébergeur propose php et une base MySql. Sur le site https://waytolearnx.com/2019/07/comment-faire-un-formulaire-en-php-mysql.html il est dit de créer une nouvelle table dans la base de données et ensuite d'y mettre le script php. C'est ça ? Et pour le moment, je n'ai pas vu comment créer cette nouvelle table. Sur un autre site, on me dit de mettre à la racine de mon site le formulaire en html et le script php, sans plus de précisions Smiley confus Sur l'interface de la base de mon hébergeur, je n'ai pour le moment que créé un nouvel utilisateur pour la base mais pour le reste, je bloque.

Sur un post actuel du forum, je vois que l'on parle d'un serveur intégré à php. On peut donc tester en local avec ce serveur ? Et sous Linux Debian ?

Merci de vous pencher sur ma demande et de me donner la marche à suivre. Ou un lien où l'on parle de cette mise en place côté serveur.
Bonjour,

Bienvenue dans le monde du dev php Smiley cligne

Ton besoin consiste pour l'instant à envoyer un mail à partir d'un formulaire de contact; tu ne sembles donc pas avoir besoin d'utiliser une base de données pour ton projet.
En évolution, tu pourrais pas exemple choisir d'enregistrer les messages dans une bdd en plus de les envoyer par mail. Il faudra alors suivre un cours sur l'utilisation d'une bdd avec PHP mais tu peux te concentrer sur le traitement du formulaire avec l'envoi du mail pour commencer.

C'est en effet une bonne pratique d'avoir un environnement de développement local sur ton propre poste.
Cela permettra notamment de configurer PHP pour le développement sur ton poste (affichage des erreurs...) et de conserver la configuration PHP pour la production sur ton serveur en ligne (pas d'affichage des erreurs sur un site en ligne).

Sur quel OS tu veux faire du développement PHP ?

Sur Windows, il existe plusieurs manières d'installer PHP (manuellement en téléchargeant le Zip depuis le site officiel, via des outils tel que XAMPP, WAMPServer, Laragon...)

PHP possède en effet un serveur web interne (à utiliser uniquement pour du dev) ce qui permet d'éviter de devoir installer un serveur web tel que Apache ou Nginx.

Une solution simple pour installer et maintenir PHP à jour sur Windows est d'utiliser le gestionnaire scoop (voir le site scoop.sh) qui permet d'utiliser la commande scoop à l'instar de la commande apt pour Debian ou la commande brew pour Mac.

L'idéal recommandé est d'avoir un environnement de dev au plus proche de l'environnement de prod.
Puisque la plupart des serveurs web en ligne sont sous Linux, c'est une bonne idée d'utiliser Debian ou distribution Linux similaire pour l'environnement de dev.
Pour des projets persos, je suis resté par simplicité sur Windows pour le dév PHP (avec WSL qui permet d'avoir un sous-système linux si besoin).
Modifié par Pitet (24 Mar 2023 - 17:40)
Merci pour la réponse,
en effet, en cherchant, j'ai aussi découvert que l'on pouvait utiliser la fonction mail de php et ainsi envoyer un formulaire sans base de donnée. C'est ce que je vais faire dans un premier temps. D'autant plus qu'enregistrer des messages de visiteurs dans une base de donnée oblige à mettre un bandeau RGPD.
Par contre, je me heurte à un autre problème, rendre les formulaires responsive. Pour moi, c'est la surprise, je m'aperçois que ce n'est pas aussi facile que je le croyais.
Je suis sous Linux Debian.
Par contre, tu n'as pas répondu à ma question sur la configuration de la base de données et la création d'une table. Ça pourra me servir un jour.
Très bon choix pour Debian ! N'ayant pas réinstallé PHP depuis un moment sur cet OS, je préfère te conseiller de voir un des nombreux guides en ligne pour l'installation de PHP en fonction de ta version de Debian.

Tu peux voir un aperçu de l'utilisation d'une bdd avec PHP ici (privilégier l'API PDO) : https://phptherightway.com/#databases
Il pourrait aussi être intéressant de commencer par se former aux bases de données sans PHP : apprendre comment interagir avec une base de données via un client SQL (PhpMyAdmin, HeidiSQL, ...), apprendre le langage SQL et le modèle relationnel, etc.
Modérateur
Salut,

Bongota a écrit :

en effet, en cherchant, j'ai aussi découvert que l'on pouvait utiliser la fonction mail de php et ainsi envoyer un formulaire sans base de donnée.


Pour un formulaire de contact, ce n'est pas la peine d'enregistrer en database. La boite mail ciblée suffit Smiley cligne . N'oublie pas qu'il faudra que tu t'installes un serveur SMTP (postfix par exemple) et le configurer. Attention, certains FAI bloquent l'envoie Smiley cligne . Il faudra peut-être voir avec le FAI et peut-être configurer ta box. Pour t'en rendre compte, il faudra que tu vois dans les logs de ton système.

edit: je viens de penser aussi à ceci. Il y a phpmailer qui peut être une bonne alternative à un serveur smtp. Tu peux aussi utiliser symfony/mailer apparemment

Bongota a écrit :

Par contre, je me heurte à un autre problème, rendre les formulaires responsive. Pour moi, c'est la surprise, je m'aperçois que ce n'est pas aussi facile que je le croyais.


Tout dépend de ta mise en page. Mais ce n'est pas compliqué. Il suffit de penser en fluidité et mettre les breakpoint aux bons endroits pour un rendu optimal. De toute manière, pose ta question sur le forum Smiley cligne
Bongota a écrit :

Je suis sous Linux Debian.

Bonne nouvelle et c'est un très bon choix ! Sache que Debian est plus austère qu'Ubuntu. La courbe d'apprentissage est un peu plus corsée. En outre, la communauté Debian est grande. Tu as un bon site : debian facile qui pourra t'aider. Sache aussi qu'il y a de la beaucoup de documentations sur le sujet (wiki, blog, etc.)

Pour ma machine principale à la maison, je tourne sur OpenSuse depuis 8-9 ans et pour ma machine de travail au boulot, c'est une Debian. Bien que j'aime OpenSuse, je pense prochainement passer sur Debian sur ma machine principale à la maison.

Bongota a écrit :

Par contre, tu n'as pas répondu à ma question sur la configuration de la base de données et la création d'une table. Ça pourra me servir un jour.


Jette un coup d'oeil à :
- Administrez vos bases de données avec MySQL
- Apprendre à coder en PHP et MySQL

Personnellement, je te conseillerai plutôt :
- Python (php, c'est bien, mais Python, c'est tellement mieux !). Sache qu'avec Python, tu as dans la std, le module smtplib. Tu n'as pas besoin d'un serveur mail. Or, avec php, ce n'est pas le cas de base (je viens de sniper PHP Smiley troll ).
- Postgresql (parce que Mysql c'est bien. Mais PostgreSQL, c'est mieux !)
Modifié par niuxe (25 Mar 2023 - 03:02)
Merci pour toutes ces infos, elles vont me permettre d'y voir plus clair et d'avancer petit à petit.
Linux... bon ça fait plus de 25 ans que je suis dessus.
J'ai aussi une Ubuntu pour la MAO (en réalité une QX Studio, basée sur Ubuntu), elle est optimisée dès le départ pour la MAO, pas besoin d'installer un noyau faible latence, de paramétrer la priorité des interruptions et d'installer tout ce qui est nécessaire pour la production musicale. Je ne fais que de la MAO dessus.
Bonne journée.
Bongota a écrit :
Par contre, je me heurte à un autre problème, rendre les formulaires responsive. Pour moi, c'est la surprise, je m'aperçois que ce n'est pas aussi facile que je le croyais.

Si si ça se fait. Ce sont tes conteneurs et la grille éventuelle qui doivent déterminer le comportement adaptatif, pas les inputs qui, eux, doivent être définis avec un width de 100%.

Non, avec les formulaires, le problème vient dès que l'on cherche à les personnaliser en profondeur, alors là, oui, il faut du lourd en documentation.
En effet, j'avais bien mis le tout dans un container responsive, mais oublié de "traiter" les input.
Il y a beaucoup d'exemples sur le net.
Merci.
Salut,
j'ai suivi ton lien pour le responsive. En effet, ça fonctionne, mais je trouve que 100 % est énorme, même en mode desktop. J'ai mis à 60 %. Par contre, avec le @media, j'ai choisi 96 % pour les mobiles.
J'ai fait le choix pour le moment de l'envoi d'un formulaire avec la fonction mail de php, inutile de s'embarquer dans les bases de données avant de les maîtriser. Pour les tests, c'est sûr qu'il faut avoir un serveur local.
Attention, je constate que depuis quelques mois les messages envoyés par la fonction mail de php sont souvent considérés comme spam par de nombreux serveur de messagerie. On ne peut pas être sûr que la personne à laquelle le message est envoyé va effectivement lui parvenir.
Oui en effet, c'est un risque à envisager.
On peut utiliser un captcha, à condition de le tester avant, afin qu'il ne soit pas trop compliqué à remplir et comporte une option sonore.
Dans le formulaire, il faut choisir un email d'expéditeur en rapport avec son domaine d'hébergement, sinon les anti SPAM du destinataire risquent de le mettre dans les indésirables.
------------
Après quelques essais, il semble bien que tu ai raison. Malgré mes précautions, le contenu du formulaire arrive dans les SPAMS de mon client mail. Et contrairement à ce que j'avais dit, le captcha n'y changera rien, ça ne contrôle pas les SPAMS. De plus, le message met du temps pour arriver, il passe sans doute dans des filtres avant. Arriver dans les SPAMS n'est pas un problème pour moi, mais est-ce que ça va être constant ?
Modifié par Bongota (27 Mar 2023 - 11:36)
Modérateur
PapyJP a écrit :
Attention, je constate que depuis quelques mois les messages envoyés par la fonction mail de php sont souvent considérés comme spam par de nombreux serveur de messagerie. On ne peut pas être sûr que la personne à laquelle le message est envoyé va effectivement lui parvenir.


ça dépend de plein de facteurs.... la fonction mail n'est pas considéré comme spam mais le les paramètres du smtp, le dns de l'email VS dns smtp, etc. Smiley cligne
Je crois que c'est bon, il y avait un petit problème sur le script php, j'ai corrigé. Smiley smile
Maintenant, le contenu du formulaire arrive directement dans la boîte de destination, pas dans les spams. J'ai même tenté en mettre sur le script une adresse gmail de provenance, ça n'a rien changé.
Restera à voir en production, quand se présenteront des envois venant d'autres domaines. Mais ça fonctionne, le responsive aussi. Ce qui n'empêchera pas de continuer sur ce sujet, il reste à installer un anti-spam, pour le formulaire cette fois, et ajouter une fonction "effacer le formulaire", bien pratique pour celui qui rédige.
J'attends des essais venus d'ailleurs avant de mettre résolu.
Bonjour,
tout fonctionne pour le formulaire, sauf la surprise des caractères accentués. Si, au moment de la rédaction du formulaire, les accents et caractères spéciaux sont bien présents, ils ne le sont plus sur le mail d'arrivée.
J'ai lu des dizaines de posts différents, rien à faire. La balise charset="utf-8 est présente sur le serveur, à travers le fichier htaccess. J'ai tenté de multiples propositions de header dans le php. Rien n'y a fait quoi que ce soit. On en parle aussi sur le forum de Alsacréations. Apparemment, c'est un problème. Je lis mes mail sur Thunderbird.
Une solution ?
Modérateur
Bonjour,

Le problème peut venir de multiples endroits. On ne peut pas y répondre comme ça.

1) Ton email est-il du html ou du texte simple ou autre chose ?

2) Quel header mets-tu comme 4e paramètre de la fonction mail() ?

3) As-tu accès à la configuration de ton serveur ? Ou bien dans le cas contraire, es-tu certain qu'il fait de l'UTF-8 de bout en bout ?

4) Ça veut dire quoi "La balise charset="utf-8 est présente sur le serveur, à travers le fichier htaccess" ? Tu as mis quoi comme charset dans la page qui affiche le formulaire que remplit l'internaute ? Tes pages sont-elles bien en utf-8 ?

5) Tes caractères accentués s'affichent comment dans l'email ? Ça ressemble à quoi ?

6) Utilises-tu à un moment ou à un autre dans ton formulaire des informations provenant d'une base de données ?

Amicalement,
Mon email est du texte simple
Les headers, j'en ai tant essayé que je ne sais même plus. J'ai parcouru tous les blogs où l'on parlait de ce problème et essayé au moins une dizaine de propositions. Aucune n'a fonctionné.
Le serveur est chez l'hébergeur et je n'y ai bien sûr pas accès, sauf avec le htaccess.
La balise charset="utf-8 est présente, ça veut dire que je l'ai mise sur le htaccess, tout en haut:
AddDefaultCharset utf-8

Non, je n'utilise pas de base de données.
L'envoi du formulaire, lu sur le webmail de free me donne le même résultat, pas les caractères spéciaux et accentués.
------------
Bon, laissons tomber, je viens de fouiller dans Thunderbird et régler le problème. Il faut aller dans "Préférences, Display, Formating, Advenced et là regarder vers Outgoing Mail et Incoming Mail". Incoming était sur "Western (ISO-8859-1). Le mettre sur UFT-8 a réglé le problème. Jusqu'à ce formulaire, je n'avais jamais eu de problèmes avec ce réglage.
N'empêche, il y a pléthore de posts à ce sujet sur tous les forums. Tout le monde a des problèmes avec ça.
Modifié par Bongota (28 Mar 2023 - 16:49)
Modérateur
Bonjour,

Bongota a écrit :
Tout le monde a des problèmes avec ça.

Normal ! En informatique, y a deux trucs qui sont complètement inhumain à réaliser : envoyer un email automatiquement et faire marcher une imprimante ! Smiley lol

Amicalement,