Re: Failed to write to a text file (text file is RW) [message #171426 is a reply to message #171424] |
Mon, 03 January 2011 01:04 |
justaguy
Messages: 16 Registered: December 2010
Karma:
|
Junior Member |
|
|
On Jan 2, 6:55 pm, Jerry Stuckle <jstuck...@attglobal.net> wrote:
> On 1/2/2011 6:26 PM, justaguy wrote:
>
>
>
>> On Jan 2, 5:00 pm, Denis McMahon<denis.m.f.mcma...@googlemail.com>
>> wrote:
>>> On 02/01/11 20:19, justaguy wrote:
>
>>>> I dig up the following script. Added a simple HTML file with a form
>>>> field named "vote" and have it send to the following php script.
>>>> However, it failed to write to the poll_result.txt file. Why?
>
>>> The following seems to work for me.
>
>>> <?php
>>> $filename = "poll_result.txt";
>>> if (isset($_POST['vote'])) {
>>> $vote = intval($_POST['vote']); // get this vote
>>> $content = file($filename); // read result file
>>> $array = explode("||", $content[0]);
>>> $yes = intval($array[0]); // get stored results
>>> $no = intval($array[1]);
>>> if ($vote == 1) $yes++; // increment one
>>> if ($vote == 0) $no++;
>>> $insertvote = $yes."||".$no; // new result string
>>> }
>>> else {
>>> $insertvote = "0||0\n"; // reset result string
>>> $yes = 0;
>>> $no = 0;
>>> }
>>> $fp = fopen($filename,"w"); // store results
>>> fputs($fp,$insertvote);
>>> fclose($fp);
>>> echo<<<EOT
>>> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
>>> "http://www.w3.org/TR/html4/strict.dtd">
>>> <html>
>>> <head>
>>> <title>Yes-No Poll</title>
>>> </head>
>>> <body style="padding:1em 3em">
>>> <form method="post" action="quickpoll.php" name="f1" id="f1">
>>> <p>Yes:<input type="radio" name="vote" id="v1_1" value="1"><br>
>>> No:<input type="radio" name="vote" id="v1_0" value="0"><br>
>>> <input type="submit" value="Vote Now" name="s1" id="s1"></p>
>>> </form>
>>> <p>The results so far:<br>
>>> Yes: $yes votes<br>
>>> No: $no votes</p>
>>> </body>
>>> </html>
>>> EOT;
>>> ?>
>
>>> Rgds
>
>>> Denis McMahon
>
>> Denis,
>
>> I still failed to write to the poll_result.txt file and I noticed
>> there's a slight difference between this file's access attributes
>> compared to a similar target text file with a similar script and
>> process. The other target text file has rwxrwxrwx attributes while
>> this one has rwrwrw attributes. I thought the global writable would
>> suffice but it seems I was incorrect. My ftp client failed to do
>> chmod 755 to the global x (execute) attribute to the file.
>
>> Thanks though.
>
>> Don
>
> You do not need execute privileges to write the file - in fact, you
> should NOT have it - the file is not an executable. You also definitely
> should NOT have global write (or read) privileges.
>
> Did you check the return value from fopen()? ALWAYS check it to ensure
> that the file opened correctly. Also, do you know if the fread() and/or
> fwrite() worked correctly? You never check to see.
>
> --
> ==================
> Remove the "x" from my email address
> Jerry Stuckle
> JDS Computer Training Corp.
> jstuck...@attglobal.net
> ==================
Jerry,
Here's the block of code with debugging info and it still has a
problem:
//insert votes to txt file
$insertvote = $yes."||".$no;
$fp = fopen($filename,"w");
echo "fp;";
echo $fp;
fputs($fp,$insertvote);
echo "insert; ";
echo $insertvote;
fclose($fp);
And here's its output:
10 fp;insert; 1||0
Which seems to suggest the operation of $fp = fopen($filename,"w")
failed.
// the poll_result.txt file is in the same directory
$filename = "poll_result.txt";
/* why ok with another php script?
Why a similar statement for file read in another script is ok.
$myFile = "someLog.txt";
*/
And yes, I know the 'x' bit isn't necessary. Odd. Thanks.
|
|
|