2009-10-06 3 views
0

Je rencontre des problèmes pour obtenir un formulaire php à écrire dans un fichier hébergé avec le dossier apache httpsdocs. Le formulaire fonctionne très bien si toutes les parties utilisent le protocole http, mais lorsque je sécurise le formulaire, la soumission de formulaire et le fichier dans lequel les résultats sont écrits, il échoue.PHP Formulaire d'écriture dans le fichier dans https: //

Quelqu'un peut-il aider?

Ce code php:

$myFile = "files/data.txt"; 
$fh = fopen($myFile, 'a') or die ("Could not read file"); 
$stringData = "Data in pipe format\n"; 
fwrite($fh, $stringData); 
fclose($fh); 
header('Location: http://www.example.com/thankyou'); 

Et les différents endroits sont:

  • /var/www/vhosts/example.com/httpdocs/files
  • /var/www /vhosts/example.com/httpsdocs/files

En outre, ma page de formulaire est https://example.com/form.php et le champ de formulaire redi rects to action = "processform.php", alors pourquoi cherche-t-il processform.php dans httpdocs plutôt que dans httpsdocs? Sûrement, il devrait rester dans le même protocole/répertoire que celui à partir duquel il a été appelé!

Merci pour toute aide :)

Répondre

1

Vous êtes confus choses. Les urls ne sont pas des urls, ce sont des répertoires. Ma première idée est de vérifier les droits du répertoire sécurisé (# /var/www/vhosts/mysite.co.uk/httpsdocs/files) pour voir si votre utilisateur de serveur Web peut y écrire.

+0

Désolé, mauvais terme - ce sont les emplacements des fichiers, qui, évidemment, correspondent aux URL demandées dans le code. httpsdocs/files est assigné à l'utilisateur: psaserv, donc apache peut en effet écrire dans le dossier, et tout le contenu. – MrFidge

+0

Aussi, mon problème principal est que même si https://example.com/form.php a l'action de "processform.php, le fichier qui est appel est httpdocs/processform.php PAS httpsdocs/processform.php – MrFidge

+0

ce dernier chose est seulement possible si le serveur https utilise aussi le docroot non sécurisé, ou si vous n'avez pas processform.php comme action mais par exemple http: //votresite../processform.php. – Maarten

1

Je deuxième Maarten, ceci est définitivement un paramètre d'autorisation sur le fichier. Avez-vous chmod'd le fichier? Cela devrait être votre seul problème, mais ce type de soumission est très peu sûr même si vous le faites sur https. Je ferais en sorte que le fichier s'appelle quelque chose comme 'data.secured' Ensuite, vous pouvez utiliser les paramètres d'autorisation d'Apache pour 'verrouiller' le fichier à partir d'un accès/lecture externe.

<files "*.secured"> 
order allow,deny 
deny from all 
</files> 
+0

C'est une bonne idée - l'ai fait! – MrFidge

Questions connexes