5537 sujets

Sémantique web et HTML

Bonjour à tous,

Sur mon site, alya.com, j'ai un simple formulaire
<form action="envoi.php" method="post">
   <label>Votre nom :</label>
   <input name="nom" id="nom" type="text" />
   <label>Votre âge :</label>
   <input name="age" id="age" type="number" /></p>
   <button type="submit">Valider</button>
</form>

Et le fichier php suivant :
Bonjour, <?php echo htmlspecialchars($_POST['nom']); ?>.
Tu as <?php echo (int)$_POST['age']; ?> ans.

Quand je clique sur le bouton Submit, je suis redirigé vers la page 404.html du site.

En fait, je fais ce test car mon formulaire de contact ne fonctionne pas.
Merci de votre aide parce que je ne vois pas où est l'erreur.
Salut,

le "fichier suivant" c'est bien envoi.php ?
Tu as d'autres informations sur la construction de ton site ? Comment se fait la redirection vers 404.html ? Au niveau d'apache ?
Merci mathieuu pour ta réponse.
Le fichier suivant est bien envoi.php.
Mon site est en html5 et css, c'est une maquette trouvée sur le net que j'ai adapté.

Pour la redirection, je n'y connais pas grand chose.
J'ai ça dans le fichier htaccess
ErrorDocument 401  http://www.alcya.com/404.html
 
ErrorDocument 402  http://www.alcya.com/404.html
 
ErrorDocument 403  http://www.alcya.com/404.html
 
ErrorDocument 404  http://www.alcya.com/404.html
 
ErrorDocument 500  http://www.alcya.com/404.html
Ok donc dans ton premier message tu as oublié le 'c' a alcya.com

C'est quoi le chemin de ta page envoi.php dans ton serveur ?
Là la page d'accueil de ton site il cherche ce fichier la : /coding/php/envoi.php qui ne doit pas exister je suppose
Dans un premier temps, j'ai mon formulaire qui invoque le fichier /coding/php/envoi.php. Ce script existe bien et avant la refonte du site fonctionnait correctement.
Quand je clique sur le bouton "Submit", le formulaire affiche un message comme quoi il est impossible d'envoyer le message.
Devant cette erreur, j'ai fait un formulaire avec un script tout simple (ceux qui sont dans mon premier message) pour voir. J'ai mis les 2 fichiers à la racine du site. Et c'est là, quand je clique sur le bouton de ce formulaire, que je me retrouve sur la page 404.
Si le fichier existe vraiment je trouve bizarre qu'il te fasse des redirections Smiley ohwell
Il se passe quoi si tu vides ton htaccess pour qu'il ne te redirige plus systématiquement vers 404.html ?

Et est ce que tu es sur qu'il n'y a pas d'autres option de rewrite d'URL ? Je demande parce qu'en parcourant un peu ton site j'ai remarqué que toutes tes URL sont en .html
Bonjour Mathieuu

Quand je vide le htaccess, j'ai un message comme quoi je ne peux exécuter les scripts sur ce serveur.
J'ai donné les droits d'exécuter envoi.php sur le serveur.
Maintenant il me redirige bien vers la page de confirmation d'envoi du message, mais je ne le reçois pas.
Voici mon htaccess
ErrorDocument 401  https://www.alcya.com/404.html
 
ErrorDocument 402  https://www.alcya.com/404.html
 
ErrorDocument 403  https://www.alcya.com/404.html
 
ErrorDocument 404  https://www.alcya.com/404.html
 
ErrorDocument 500  https://www.alcya.com/404.html
 
<Files .htaccess>
order allow,deny
deny from all
</Files>
Options -Indexes
RewriteEngine On

# 04/09/2023
# Redirection permanente de http vers https.
RewriteCond %{HTTPS} !=on
RewriteRule .*  https://%{HTTP_HOST}%{REQUEST_URI}  [R=301,L]

# 24/11/2023
# Redirection permanente pages d'articles du planning sur Excel vers la page de vente de livre.
Redirect permanent /excel-planning-01.html  https://www.alcya.com/planning/excel-planning-perpetuel.html
 
Redirect permanent /excel-planning-02.html  https://www.alcya.com/planning/excel-planning-perpetuel.html
 
Redirect permanent /excel-planning-03.html  https://www.alcya.com/planning/excel-planning-perpetuel.html
 
Redirect permanent /excel-planning-04.html  https://www.alcya.com/planning/excel-planning-perpetuel.html
 
Redirect permanent /excel-planning-05.html  https://www.alcya.com/planning/excel-planning-perpetuel.html
 


###FILTRE CONTRE CERTAINS ROBOTS DES PIRATES
## EXCEPTION: TOUS LES ROBOTS MEMES ANONYMES OU BANNIS PEUVENT ACCEDER A CES FICHIERS
RewriteCond %{REQUEST_URI} !^/robots.txt
RewriteCond %{REQUEST_URI} !^/sitemap.xml
##
RewriteCond %{HTTP_USER_AGENT} ^-?$ [OR] ## ANONYMES
RewriteCond %{HTTP_USER_AGENT} ^curl|^Fetch\ API\ Request|GT\:\:WWW|^HTTP\:\:Lite|httplib|^Java|^LeechFTP|lwp-trivial|^LWP|libWeb|libwww|^PEAR|PECL\:\:HTTP|PHPCrawl|PycURL|python|^ReGet|Rsync|Snoopy|URI\:\:Fetch|urllib|WebDAV|^Wget [NC] ## BIBLIOTHEQUES / CLASSES HTTP DONT ON NE VEUT PAS. ATTENTION, CELA PEUT BLOQUER CERTAINES FONCTIONS DE VOTRE CMS. NE PAS TOUT EFFACER, MAIS CHERCHEZ LE NOM DE LA CLASSE HTTP CONCERNEE (DEMANDEZ AUX DEVELOPPEURS DE VOTRE CMS). CETTE LISTE BLOQUE 80% DES ROBOTS SPAMMEURS. IL FAUT LA CONSERVER.
## RewriteCond %{HTTP_USER_AGENT} ^[bcdfghjklmnpqrstvwxz\ ]{10,}|^[0-9a-z]{15,}|^[0-9A-Za-z]{19,}|^[A-Za-z]{3,}\ [a-z]{4,}\ [a-z]{4,} [OR] ## CEUX QUI INVENTENT DES NOMS AU HASARD, RETIREZ LES 2 DIESES EN DEBUT DE LIGNE POUR L'ACTIVER
RewriteRule (.*) - [F]

### FILTRE CONTRE XSS, REDIRECTIONS HTTP, base64_encode, VARIABLE PHP GLOBALS VIA URL, MODIFIER VARIABLE _REQUEST VIA URL, TEST DE FAILLE PHP, INJECTION SQL SIMPLE
RewriteEngine On
RewriteCond %{REQUEST_METHOD} (GET|POST) [NC]
RewriteCond %{QUERY_STRING} ^(.*)(%3C|<)/?script(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)(%3D|=)?javascript(%3A|:)(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)document\.location\.href(.*)$ [OR]
RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(127\.0).* [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)(%3D|=)(https?|ftp|mosConfig)(%3A|:)//(.*)$ [NC,OR] ## ATTENTION A CETTE REGLE. ELLE PEUT CASSER CERTAINES REDIRECTIONS RESSEMBLANT A:  http://www.truc.fr/index.php?r=http://www.google.fr  ##
RewriteCond %{QUERY_STRING} ^.*(_encode|localhost|loopback).* [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)GLOBALS(=|[|%[0-9A-Z]{0,2})(.*)$ [OR]
RewriteCond %{QUERY_STRING} ^(.*)_REQUEST(=|[|%[0-9A-Z]{0,2})(.*)$ [OR]
RewriteCond %{QUERY_STRING} ^(.*)(SELECT(%20|\+)|UNION(%20|\+)ALL|INSERT(%20|\+)|DELETE(%20|\+)|CHAR\(|UPDATE(%20|\+)|REPLACE(%20|\+)|LIMIT(%20|\+)|CONCAT(%20|\+)|DECLARE(%20|\+))(.*)$ [NC]
RewriteRule (.*) - [F]

### DES FAUX URLS OU VIEUX SYSTEMES OBSOLETES, ON LES NEUTRALISE
RedirectMatch 403 (\.\./|base64|boot\.ini|eval\(|\(null\)|^[-_a-z0-9/\.]*//.*|/etc/passwd|^/_vti.*|^/MSOffice.*|/fckeditor/|/elfinder/|zoho/|/jquery-file-upload/server/|/assetmanager/|wwwroot|e107\_)
# DESACTIVE LES METHODES DE REQUETES TRACE TRACK DELETE
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|DELETE|TRACK) [NC]
RewriteRule ^.* - [F]

### ON EVITE LE VOL D'IMAGES, VIDEO, SON, FEUILLE DE STYLE, PDF ET ZIP
### LES VISITEURS DOIVENT PASSER PAR LE SITE. 
RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^https://[-_a-z0-9.]*alcya\.com$ [NC] 
RewriteCond %{HTTP_REFERER} !^https://[-_a-z0-9.]*alcya\.com/.*$ [NC] 
RewriteCond %{HTTP_REFERER} !^https?://.*(translate|paypal|google|bing|yahoo|yandex|baidu|facebook|qwant|duck|ixquick|pinterest|twitter).*$ [NC] ## CES DOMAINES PEUVENT AFFICHER LES DONNEES DU SITE
RewriteRule .*\.(gif|jpe?g?|jp2|png|svgz?|css|pdf|zip|gz|js|mp3|m4a|mp4|mov|divx|avi|wma?v?|wmp|swf|flv|docx?|xlsx?|pptx?|vbs|rtf|asf?x?|odt|ods|odp|odg|odb)$ - [NC,F]

# Aucun script dans le dossier et ses sous-dossiers, que ce soit PHP, PERL ou autre CGI, ne pourra s'executer si ExecCGI est inactif. Et interdit d'afficher la liste des fichiers.
OPTIONS -ExecCGI  -Indexes

## BEGIN Cache-Control Headers
<IfModule mod_expires.c>
 <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
  Header set Cache-Control "max-age=2592000, public"
 </FilesMatch>
 <FilesMatch "\.(js)$">
 Header set Cache-Control "max-age=2592000, private"
 </FilesMatch>
 # Mise en cache du html et xml pour 12 heures
 <filesMatch ".(html|htm|xml)$">
   Header set Cache-Control "max-age=43200, public"
 </filesMatch>
 # Désactive la mise en cache pour les fichier PHP et CGI
  <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
   Header unset Cache-Control
  </FilesMatch>
## END Cache-Control Headers

## BEGIN EXPIRES CACHING
 FileETag MTime Size
 ExpiresActive On
 ExpiresDefault "access plus 7200 seconds"
 ExpiresByType image/jpeg "access plus 2592000 seconds"
 ExpiresByType image/png "access plus 2592000 seconds"
 ExpiresByType image/gif "access plus 2592000 seconds"
 ExpiresByType image/svg+xml "access plus 1 week "
 AddType image/x-icon .ico
 ExpiresByType image/ico "access plus 1 week"
 ExpiresByType image/icon "access plus 1 week"
 ExpiresByType image/x-icon "access plus 2592000 seconds"
 ExpiresByType text/css "access plus 2592000 seconds"
 ExpiresByType text/javascript "access plus 2592000 seconds"
 ExpiresByType text/html "access plus 7200 seconds"
 ExpiresByType application/xhtml+xml "access plus 7200 seconds"
 ExpiresByType application/javascript A2592000
 ExpiresByType application/javascript "access plus 2592000 seconds"
 ExpiresByType application/x-javascript "access plus 2592000 seconds"
 ExpiresByType application/x-shockwave-flash "access plus 1 week"
</IfModule>
## END EXPIRES CACHING ##

Header unset Etag
FileEtag none


Merci pour le temps que tu passes à m'aider
Hum, je ne comprends pas cette phrase :
a écrit :
Quand je vide le htaccess, j'ai un message comme quoi je ne peux exécuter les scripts sur ce serveur.
J'ai donné les droits d'exécuter envoi.php sur le serveur.

Tu as fais quoi exactement ? (La comme ça j'ai l'impression que c'est lui faire un chmod + x dessus, mais normalement ce n'est pas utile.)

Quand je disais de vidais le htaccess, je parlais juste des lignes
ErrorDocument XXX  https://www.alcya.com/404.html
vu que je ne connaissais pas le reste de ton htaccess, c'était surtout pour pouvoir voir si il arrive bien sur la page voulu ou pas

La en voyant le reste de ton htaccess je trouve un peu bizarre le commentaire et la commande qui va avec :
# Aucun script dans le dossier et ses sous-dossiers, que ce soit PHP, PERL ou autre CGI, ne pourra s'executer si ExecCGI est inactif. Et interdit d'afficher la liste des fichiers.
OPTIONS -ExecCGI  -Indexes

Il me semble que le -ExecCGI n'a pas d'impact sur PHP.

Pour cette partie la
a écrit :
confirmation d'envoi du message, mais je ne le reçois pas.

Je suppose que tu parles d'un envoi par mail, la le problème est souvent un peu pénible à debug, car cela peut venir de ton code ou de ton serveur mais cela peut aussi venir de toute la chaîne de traitement après ton serveur et des diverses protections de spam Smiley ohwell

Je suppose que tu dois être en train de faire des tests, en re regardant ton site il ne restait plus que 3 fichiers , et email.html m'a bien renvoyé vers envoi.php avec le nom rempli.
Alors, tout fonctionne, Youpiii !
J'ai tout remis.
C'est bien la règle
OPTIONS -ExecCGI  -Indexes
qui me renvoi vers la page 404.

J'avais bien aussi une règle css qui bloquait mais je ne sais pas pourquoi.

Je pense (mais ce n'est qu'intuitif) que mon hébergeur devait faire des modifications ou de la maintenance sur le serveur en même temps (ça ne m'étonnerait pas on pourrait m'appeler le chat noir Smiley smile .

En tout cas vraiment merci Mathieuee pour ton investissement et ta patience.
Ce sont des gens comme toi qui font la richesse du web, tu mérites que la vie t’envoie le meilleur ?.