Problème dans un code php

Fermé
anerax Messages postés 15 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 16 octobre 2008 - 30 juin 2008 à 19:16
anerax Messages postés 15 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 16 octobre 2008 - 1 juil. 2008 à 09:04
Bonjour,
Je souhaiterais créer un système pour qu'un internaute qui va sur ma page web, mette un login et un mot de passe.
Une fois ceci fais, un fichier login.acc apparaitrait dans un de mes dossiers. (login étant le login de la personne et .acc l'extension).

La structure interne du fichier .acc est la même qu'un .ini
Corwin m'a bien aidé et m'a fais un script, le truc c'est qu'il comportait quelques bugs d'inatention que j'ai corrigé.





<?php

if ($HTTP_POST_VARS["formulaire"] <> "envoi" ) {
// valeur "formulaire" n'est pas remplie, donc on affiche le formulaire
?>

<form name="acces" method="post" action="?">

<?phpphp echo $HTTP_POST_VARS["formulaire"]; ?>
<input type=hidden value="envoi" name="formulaire"><br>

Pseudo : <input type=text value="" name="pseudo">
<br>
Mot de passe: <input type=text value="" name="mdp">
<br>
<input type=submit name="Créer">
</form>

<?php } else {
// valeur formulaire remplie correctement, donc on crée le fichier

$repertoire = "C:\wamp\www\test";
// à préciser le répertoire concerné, mettre vide pour le répertoire courant
// sinon ne pas oublier le / à la fin...

opendir($repertoire);
// on ouvre le répertoire concerné

$FileC = $repertoire.$HTTP_POST_VARS["pseudo"].".acc" ;
// nom du fichier

// test si une page du même nom existe déjà ou pas... si oui, on fait rien. si non on crée la page !
if (file_exists($FileC)) {

// message pour indiquer qu'un fichier existe déjà
?>

<br><font color=red><b>
<br><br>
Il existe déjà un pseudo du nom de <?phpphp echo $HTTP_POST_VARS["pseudo"]; ?>.

Merci de préciser un autre pseudo.
</b><br>
Appuyez sur le bouton RETOUR du navigateur pour modifier vos données.
Merci !</font>

<?php

} else { // le fichier n'existe pas, alors on le crée !


// on définit le texte à l'intérieur
$int_texte = "[Account]";
$int_texte .= "\n"; // retour à la ligne
$int_texte .= "AccName=".$HTTP_POST_VARS["pseudo"];
$int_texte .= "\n"; // retour à la ligne
$int_texte .= "Password=".$HTTP_POST_VARS["mdp"];
$int_texte .= "\n"; // retour à la ligne
$int_texte .= "LogonCount=0";
$int_texte .= "\n"; // retour à la ligne
$int_texte .= "LogonType=2";
$int_texte .= "\n"; // retour à la ligne
$int_texte .= "Flags=0";
$int_texte .= "\n"; // retour à la ligne
$int_texte .= "Character=";


$FileCO = fopen($FileC,"w"); // ouverture du fichier
fwrite($FileCO,$int_texte); // écriture dans le fichier
fclose($FileCO); // fermeture du fichier
// chmod 777 (lecture / écriture complète sur le fichier)
chmod ($FileC, 0777);
echo ("<br>Pseudo<b> ".$HTTP_POST_VARS["pseudo"]."</b> créé !");

?>


<br><br><a href="<?php echo $HTTP_POST_VARS["pseudo"]; ?>.acc" target=_blank>voir le fichier <?php echo $HTTP_POST_VARS["pseudo"]; ?>.acc</a>

<?php
} // fin test existence pour création

closedir($repertoire);
// on ferme le répertoire concerné

$int_texte = "";
// on vide le contenu de la variable

} // fin du if du fomulaire
?>









Le problème présent c'est que le fichier ne se créer pas dans C:/wamp/www...Pouvez vous m'aider svp ?

Merci beaucoup.
A voir également:

2 réponses

Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
30 juin 2008 à 23:14
Salut, il ne met pas d'erreur ou warning ? Parce que je vois un problème qui en fait deux :

1. $repertoire = "C:\wamp\www\test"; ne pourra jamais fonctionner. En plus du fait que le backslash soit un caractère d'échappement (dans ton cas il faut le doubler), il me semble que le protocole "file://" doive être renseigné... et encore je n'ai jamais tenté une telle opération pour pointer un répertoire plutôt qu'un fichier, donc je ne confirmerai pas.

2. Tu devrais donc préférablement utiliser des chemins relatifs : Si ton fichier PHP se trouve dans le répertoire test, alors tu te trouves déjà dans le bon répertoire. Si ton fichier PHP se trouve à la racine du serveur web (www), alors tu dois indiquer le chemin relatif "/test" et ainsi de suite, ".." pour remonter une fois de répertoire...
0
anerax Messages postés 15 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 16 octobre 2008 1
1 juil. 2008 à 09:04
Salut on m'a bien aidé sur le sdz et on m'a crée sa :) (j'ai juste enlevé un mini bug^^)



<?php

if(empty($_POST))
{
?>

<form name="acces" method="post" action="?">
Pseudo : <input type="text" name="pseudo" /><br />
Mot de passe: <input type="password" name="mdp" /><br />
<input type="submit" name="Créer" />
</form>

<?php
}
else
{

$repertoire = 'C:/wamp/www/test/';
// à préciser le répertoire concerné. Ne pas oublier le '/' à la fin

$filename = $repertoire . $_POST['pseudo'] . '.acc';
// nom du fichier

// test si une page du même nom existe déjà ou pas... si oui, on fait rien. si non on crée la page !
if(file_exists($filename))
{
// message pour indiquer qu'un fichier existe déjà
?>
<div style="color: #f00; font-weight: bold;">
Il existe déjà un pseudo du nom de <em><?php echo $_POST['pseudo']; ?></em>.<br />
Merci de préciser au autre pseudo.
</div>
<div style="color: #f00;">
Appuyez sur le bouton RETOUR du navigateur pour modifier vos données.<br />
Merci
</div>
<?php

}
else // le fichier n'existe pas, alors on le créer !
{
// on définit le texte à l'intérieur
$int_texte = '[Account]' . "\n";
$int_texte .= 'AccName=' . $_POST['pseudo'] . "\n";
$int_texte .= 'Password=' . $_POST['mdp'] . "\n";
$int_texte .= 'LogonCount=0' . "\n";
$int_texte .= 'LogonType=2' . "\n";
$int_texte .= 'Flags=0' . "\n";
$int_texte .= 'Character=';

$FileCO = fopen($filename,"w"); // ouverture du fichier
fputs($FileCO,$int_texte); // écriture dans le fichier
fclose($FileCO); // fermeture du fichier

// Le fichier par défaut est en .txt, on le renomme en .acc
rename($filename, substr($filename, 0, strlen($filename)-3) . 'acc');

// chmod 777 (lecture / écriture complète sur le fichier)
chmod($filename, 0777);
echo '<div>Pseudo <strong> ' . $_POST['pseudo'] . '</strong> créé !</div>';
} // fin test existence pour création

} // fin du if du fomulaire
?>

Et sa marche :p
0