Fopen et fwrite
Résolu
bartimus37
Messages postés
193
Date d'inscription
Statut
Membre
Dernière intervention
-
bartimus37 Messages postés 193 Date d'inscription Statut Membre Dernière intervention -
bartimus37 Messages postés 193 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'ai une erreur : Parse error: syntax error, unexpected 'Y' (T_STRING) in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 9
avec se script :
form-redirlien.php :
<form action="redir.php" method="post">
<p>
<input type="text" name="lien" />
<input type="submit" value="Valider" />
</p>
</form>
redir.php :
<?php
$jeux = $_POST['lien'];
$mon_fichier=fopen("$jeux.php","w+");
$filename = '$jeux.php';
$somecontent = "$heures = 0; // les heures < 24
$minutes = 0; // les minutes < 60
$secondes = 15; // les secondes < 60
$annee = date("Y"); // année
$mois = date("m"); // mois
$jour = date("d"); // jours
$redirection = 'http://localhost/lienjeu/$jeux';
$secondes = mktime(date("H") + $heures,
date("i") + $minutes,
date("s") + $secondes,
$mois,
$jour,
$annee
) - time();
?>
<html>
<head>
<title>redirection</title>
<script type="text/javascript">
var temps = <?php echo $secondes;?>;
var timer =setInterval('CompteaRebour()',1000);
function CompteaRebour(){
temps-- ;
j = parseInt(temps) ;
h = parseInt(temps/3600) ;
m = parseInt((temps%3600)/60) ;
s = parseInt((temps%3600)%60) ;
document.getElementById('minutes').innerHTML=(s<10 ? "0"+s : s) + ' s ';
if ((s == 0 && m ==0 && h ==0)) {
clearInterval(timer);
url = "<?php echo $redirection;?>"
Redirection(url)
}
}
function Redirection(url) {
setTimeout("window.location=url", 500)
}
</script>
</head>
<body onload="timer">
<?php
if ($secondes <= 3600*24) {
?>
<span style="font-size: 36px;">Veuillez patienter pendant : </span>
<div id="minutes" style="font-size: 36px;"></div></span>
<?php
}
?>";
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'a')) {
echo "Impossible d'ouvrir le fichier ($filename)";
exit;
}
// Ecrivons dans le fichier.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Impossible d'écrire dans le fichier ($filename)";
exit;
}
echo "L'écriture de ($somecontent) dans le fichier ($filename) a réussi";
fclose($handle);
} else {
echo "Le fichier $filename n'est pas accessible en écriture.";
}
?>
Merci de vos réponse
avec se script :
form-redirlien.php :
<form action="redir.php" method="post">
<p>
<input type="text" name="lien" />
<input type="submit" value="Valider" />
</p>
</form>
redir.php :
<?php
$jeux = $_POST['lien'];
$mon_fichier=fopen("$jeux.php","w+");
$filename = '$jeux.php';
$somecontent = "$heures = 0; // les heures < 24
$minutes = 0; // les minutes < 60
$secondes = 15; // les secondes < 60
$annee = date("Y"); // année
$mois = date("m"); // mois
$jour = date("d"); // jours
$redirection = 'http://localhost/lienjeu/$jeux';
$secondes = mktime(date("H") + $heures,
date("i") + $minutes,
date("s") + $secondes,
$mois,
$jour,
$annee
) - time();
?>
<html>
<head>
<title>redirection</title>
<script type="text/javascript">
var temps = <?php echo $secondes;?>;
var timer =setInterval('CompteaRebour()',1000);
function CompteaRebour(){
temps-- ;
j = parseInt(temps) ;
h = parseInt(temps/3600) ;
m = parseInt((temps%3600)/60) ;
s = parseInt((temps%3600)%60) ;
document.getElementById('minutes').innerHTML=(s<10 ? "0"+s : s) + ' s ';
if ((s == 0 && m ==0 && h ==0)) {
clearInterval(timer);
url = "<?php echo $redirection;?>"
Redirection(url)
}
}
function Redirection(url) {
setTimeout("window.location=url", 500)
}
</script>
</head>
<body onload="timer">
<?php
if ($secondes <= 3600*24) {
?>
<span style="font-size: 36px;">Veuillez patienter pendant : </span>
<div id="minutes" style="font-size: 36px;"></div></span>
<?php
}
?>";
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'a')) {
echo "Impossible d'ouvrir le fichier ($filename)";
exit;
}
// Ecrivons dans le fichier.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Impossible d'écrire dans le fichier ($filename)";
exit;
}
echo "L'écriture de ($somecontent) dans le fichier ($filename) a réussi";
fclose($handle);
} else {
echo "Le fichier $filename n'est pas accessible en écriture.";
}
?>
Merci de vos réponse
9 réponses
Bonsoir
Je crois que ce n'est pas tout à fait aussi simple que ça.
En fait, tu essayes de mettre dans $somecontent un texte assez long que tu choisis d'entourer par des "
Mais ce texte s'arrête alors au premier " rencontré - celui de $annee = date("Y"); // année
Si tu veux mettre des " dans une chaîne entre ", il faut échapper les " avec des \.
Je ne donne que le début comme exemple :
J'ai corrigé aussi le début, où tu te mêlais les pinceaux avec $filename, les apostrophes simples. Tu devrais ouvrir le fichier en w+ au moment d'écrire dedans.
Je crois que ce n'est pas tout à fait aussi simple que ça.
En fait, tu essayes de mettre dans $somecontent un texte assez long que tu choisis d'entourer par des "
Mais ce texte s'arrête alors au premier " rencontré - celui de $annee = date("Y"); // année
Si tu veux mettre des " dans une chaîne entre ", il faut échapper les " avec des \.
Je ne donne que le début comme exemple :
<?php $jeux = $_POST['lien']; $filename = "$jeux.php"; $somecontent = "$heures = 0; // les heures < 24 $minutes = 0; // les minutes < 60 $secondes = 15; // les secondes < 60 $annee = date(\"Y\"); // année $mois = date(\"m\"); // mois $jour = date(\"d\"); // jours ...
J'ai corrigé aussi le début, où tu te mêlais les pinceaux avec $filename, les apostrophes simples. Tu devrais ouvrir le fichier en w+ au moment d'écrire dedans.
Comme l'a dit Autumn'Tears, tu as mis les \ après les " au lieu de les mettre avant à certains endroits.
Et en plus, tu as oublié des \ avant certains $
Mais surtout, comme tu as obéi à une consigne sans la comprendre, tu as mal obéi et tu as mis des \ au-delà de la partie où il en fallait en mettre. Il en fallait UNIQUEMENTdans la partie comprise entre le " initial et le " final de $somecontent = "....";
De plus, dans cette partie, il faut ou il ne faut pas de \ devant les $, ça dépend de l'effet recherché : remplacement de la variable par sa valeur lors de l'exécution de redir.php, ou conservation du nom de variable dans le fichier qui sera créé.
Conclusion : lis le paragraphe du manuel php sur l'écriture des chaines entre " et comment échapper les caractères dans ces chaînes (ça ne fait qu'une page). Après, tu sauras ce qu'il faut vraiment faire - et pourquoi.
Et en plus, tu as oublié des \ avant certains $
Mais surtout, comme tu as obéi à une consigne sans la comprendre, tu as mal obéi et tu as mis des \ au-delà de la partie où il en fallait en mettre. Il en fallait UNIQUEMENTdans la partie comprise entre le " initial et le " final de $somecontent = "....";
De plus, dans cette partie, il faut ou il ne faut pas de \ devant les $, ça dépend de l'effet recherché : remplacement de la variable par sa valeur lors de l'exécution de redir.php, ou conservation du nom de variable dans le fichier qui sera créé.
Conclusion : lis le paragraphe du manuel php sur l'écriture des chaines entre " et comment échapper les caractères dans ces chaînes (ça ne fait qu'une page). Après, tu sauras ce qu'il faut vraiment faire - et pourquoi.
Ce <?php n'était pas là dans ton script initial.
Et il n'a probablement rien à faire ici, il faudrait avoir le code qui précède l'erreur pour en être sûr. Mais a priori c'est
Tu es en php après le ; car le ?> est à l'intérieur de ta chaîne $somecontent="...<gras>?>"; </gras>
Il ne faut pas de balise <?php puisque tu es déjà en php.
Et il n'a probablement rien à faire ici, il faudrait avoir le code qui précède l'erreur pour en être sûr. Mais a priori c'est
<?php } ?>";
Tu es en php après le ; car le ?> est à l'intérieur de ta chaîne $somecontent="...<gras>?>"; </gras>
Il ne faut pas de balise <?php puisque tu es déjà en php.
oui j'était déjà en php j'ai corrigé cette erreur mais :
Notice: Undefined variable: heures in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 6
Notice: Undefined variable: minutes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 7
Notice: Undefined variable: secondes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 8
Notice: Undefined variable: annee in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 9
Notice: Undefined variable: mois in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 10
Notice: Undefined variable: jour in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 12
Notice: Undefined variable: redirection in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 12
Notice: Undefined variable: secondes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 13
Notice: Undefined variable: heures in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 16
Notice: Undefined variable: mois in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 17
Notice: Undefined variable: jour in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 18
Notice: Undefined variable: annee in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 26
Notice: Undefined variable: secondes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 38
Notice: Undefined variable: redirection in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 57
Le fichier $jeux.php n'est pas accessible en écriture.
Notice: Undefined variable: heures in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 6
Notice: Undefined variable: minutes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 7
Notice: Undefined variable: secondes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 8
Notice: Undefined variable: annee in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 9
Notice: Undefined variable: mois in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 10
Notice: Undefined variable: jour in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 12
Notice: Undefined variable: redirection in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 12
Notice: Undefined variable: secondes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 13
Notice: Undefined variable: heures in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 16
Notice: Undefined variable: mois in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 17
Notice: Undefined variable: jour in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 18
Notice: Undefined variable: annee in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 26
Notice: Undefined variable: secondes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 38
Notice: Undefined variable: redirection in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 57
Le fichier $jeux.php n'est pas accessible en écriture.
Je vois que tu as décidé de ne pas apprendre le php et d'attendre que je te donne les réponses.
Pourtant ton problème ne porte pas sur des choses compliquées, seulement sur le B A BA de l'écriture des chaînes avec simples et doubles quotes.
Alors dernier tuyau : s'il y a $jeux.php, c'est parce que tu as mis $filename = '$jeux.php';. Si tu mettais $filename = "$jeux.php"; ça marcherait nettement mieux.
Pourtant ton problème ne porte pas sur des choses compliquées, seulement sur le B A BA de l'écriture des chaînes avec simples et doubles quotes.
Alors dernier tuyau : s'il y a $jeux.php, c'est parce que tu as mis $filename = '$jeux.php';. Si tu mettais $filename = "$jeux.php"; ça marcherait nettement mieux.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Ton problème est ici :
$somecontent = "$heures = 0;
En supprimant cette guillemet, ton problème devrait être résolu !
Ton problème est ici :
$somecontent = "$heures = 0;
En supprimant cette guillemet, ton problème devrait être résolu !
J'avais oublié de te dire d'en mettre aussi avant les $. Mais ça n'explique pas ton message d'erreur, peux-tu montrer ton code avec les \ ajoutés ?
J'ai relu tout le fichier redir.php et j'ai corrigé les \ en trops et mal placé mais maintenant j'ai une erreur que je ne comprend pas :
Parse error: syntax error, unexpected '<' in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 58
à ma ligne 58 j'ai le debut de
<?php
// Assurons nous que le fichier est accessible en écriture
if (is_writable($filename)) {
// Dans notre exemple, nous ouvrons le fichier $filename en mode d'ajout
// Le pointeur de fichier est placé à la fin du fichier
// c'est là que $somecontent sera placé
if (!$handle = fopen($filename, 'a')) {
echo "Impossible d'ouvrir le fichier ($filename)";
exit;
}
// Ecrivons quelque chose dans notre fichier.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Impossible d'écrire dans le fichier ($filename)";
exit;
}
echo "L'écriture de ($somecontent) dans le fichier ($filename) a réussi";
fclose($handle);
} else {
echo "Le fichier $filename n'est pas accessible en écriture.";
}
?>
Parse error: syntax error, unexpected '<' in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 58
à ma ligne 58 j'ai le debut de
<?php
// Assurons nous que le fichier est accessible en écriture
if (is_writable($filename)) {
// Dans notre exemple, nous ouvrons le fichier $filename en mode d'ajout
// Le pointeur de fichier est placé à la fin du fichier
// c'est là que $somecontent sera placé
if (!$handle = fopen($filename, 'a')) {
echo "Impossible d'ouvrir le fichier ($filename)";
exit;
}
// Ecrivons quelque chose dans notre fichier.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Impossible d'écrire dans le fichier ($filename)";
exit;
}
echo "L'écriture de ($somecontent) dans le fichier ($filename) a réussi";
fclose($handle);
} else {
echo "Le fichier $filename n'est pas accessible en écriture.";
}
?>
maintenant j'ai :
Notice: Undefined variable: heures in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 6
Notice: Undefined variable: minutes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 7
Notice: Undefined variable: secondes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 8
Notice: Undefined variable: annee in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 9
Notice: Undefined variable: mois in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 10
Notice: Undefined variable: jour in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 12
Notice: Undefined variable: redirection in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 12
Notice: Undefined variable: secondes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 13
Notice: Undefined variable: heures in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 16
Notice: Undefined variable: mois in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 17
Notice: Undefined variable: jour in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 18
Notice: Undefined variable: annee in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 26
Notice: Undefined variable: secondes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 38
Notice: Undefined variable: redirection in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 57
Le fichier $jeux.php n'est pas accessible en écriture.
Notice: Undefined variable: heures in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 6
Notice: Undefined variable: minutes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 7
Notice: Undefined variable: secondes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 8
Notice: Undefined variable: annee in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 9
Notice: Undefined variable: mois in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 10
Notice: Undefined variable: jour in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 12
Notice: Undefined variable: redirection in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 12
Notice: Undefined variable: secondes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 13
Notice: Undefined variable: heures in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 16
Notice: Undefined variable: mois in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 17
Notice: Undefined variable: jour in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 18
Notice: Undefined variable: annee in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 26
Notice: Undefined variable: secondes in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 38
Notice: Undefined variable: redirection in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 57
Le fichier $jeux.php n'est pas accessible en écriture.
Tous ces "undefined variable" indiquent que tu as retiré des \ devant des $ alors qu'ils auraient dû y rester.
Parse error: syntax error, unexpected '\' (T_NS_SEPARATOR) in C:\Program Files (x86)\EasyPHP-12.0\www\redir.php on line 9
$minutes = 0; // les minutes < 60
$secondes = 15; // les secondes < 60
$annee = date(\"Y\"); // année
$mois = date(\"m\"); // mois
$jour = date(\"d\"); // jours ?
On voit bien que bartimus37 crée dynamiquement un fichier php (beurk)
https://docs.google.com/document/d/1lVdRe9Snn0YP5S7xjnd5cIksYq1bTyyvqK35eq0z0zk/edit