fwrite met vars

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jesse Degger

Jesse Degger

10/02/2007 09:58:00
Quote Anchor link
hoi, ik heb de volgende code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$form
= array()

$form +="<body><html>\n"
$form +="<form method=\"POST\" action=\"$_SERVER[\'php self\']\">\n"
$form +="<textarea rows=\"3\" name=\"$text\" cols=\"24\"></textarea></p>\n"
$form +="<p>jouwn naam: <input type=\"text\" name=\"$name\" size=\"20\"><br>\n"
$form +="naar email: <input type=\"text\" name=\"$mail\" size=\"20\"><br>\n"
$form +="&nbsp;</p>\n"
$form +="<p><input type=\"submit\" value=\"Verzenden\" name=\"B1\"><input type=\"reset\" value=\"Invoer wissen\" name=\"B2\"></p>\n"
$form +="</form>\n"
$form +="</body></html>\n"

echo "$form"

$handle = fopen($mail .".html", "w");
fwrite($mail .".html", "$text");
fclose($mail .".html");
echo "gelukt"
?>


de bedoeling hiervan is dat iemand een formulier invuld en de variables dus invuld.

alleen werkt dit niet, er moet namelijk met de form een pagina gemaakt worden die de naam heeft van het email adres met de inhoud van de text..

ok beetje onduidelijk. ik leg het wel uit in stappen:

je vult form in
variables zijn gezet
bestand wordt aangemaakt met de naam van $mail
het bestand wordt nu gewrite met $text

dat is het wel, variable $name moet je even negeren is ergens andeers voor.
ik weet niet wat er fout is aan mijn code en of als het wel werkt en je vult het in, dat dan ook de variables gezet worden.

ik hoop dat jullie mijn vraag snappen. please help mij ;)

groetjes jesse
 
PHP hulp

PHP hulp

24/12/2024 05:54:22
 
Joren de Wit

Joren de Wit

10/02/2007 10:35:00
Quote Anchor link
1. Je haalt nergens de gegevens uit je formulier op. Ik zou minstens iets verwachten als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    $handle = fopen($_POST['mail'].'.html', 'w');
}

?>


2. Je gebruikt $mail in je fwrite() waar je eigenlijk $handle moet gebruiken. $handle is immers de resource die je wilt gebruiken...

3. Je vergeet stelselmatig je regels in php af te sluiten met een ;. Zet ook eens dit bovenaan je code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>

Dan krijg je tenminste alle foutmeldingen te zien.

4a. Wat doen al die vieze backslashes in je code. Als je gewoon enkele quotes gebruikt bij het aanmaken van je variabelen, hoef je de dubbele quotes van de html niet eens te escapen. Resultaat: een veel overzichtelijkere code.

4b. Variabelen horen niet tussen quotes geplaatst te worden, een variabele is immers geen string...
 
Cake Masher

Cake Masher

10/02/2007 12:17:00
Quote Anchor link
ik heb geen flauw idee wat je allemaal bedoelt hiermee :P, maar ik heb het script wat verbeterd voor blanche..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

$form = array();  //Array aanmaken.

$form +="<html><body>\n";                                                                                        //Array setten.
$form +="<form method=POST action=" . $_SERVER['php self'] . ">\n";                                              //Array setten.
$form +="<textarea rows=3 name=text cols=24></textarea></p>\n";                                                  //Array setten.
$form +="<p>jouwn naam: <input type=text name=name size=20><br>\n";                                              //Array setten.
$form +="naar email: <input type=text name=mail size=20><br>\n";                                                 //Array setten.
$form +="&nbsp;</p>\n";                                                                                          //Array setten.
$form +="<p><input type=submit value=Verzenden name=B1><input type=reset value='Invoer wissen' name=B2></p>\n";  //Array setten.
$form +="</form>\n";                                                                                             //Array setten.
$form +="</body></html>\n";                                                                                      //Array setten.

echo "$form"; //laat de form zien.



if($_SERVER['REQUEST_METHOD'] == 'POST')
{

  $handle = fopen($_POST['mail'] .".html", "w");
  fwrite($handle, $_POST['text']);
  fclose($handle);
  echo "gelukt";
}



/* voor een vedere error afhandeling:

  if($handle = fopen($_POST['mail'] . ".html", "w")) {
    if(fwrite($handle, $_POST['text'])) {
       echo "Gelukt!";
       fclose($handle);
    } else {
      echo "Kon bestand " . $_POST['mail'] . ".html niet editen.";
    }
  } else {
    echo "Kon bestand " . $_POST['mail'] . ".html niet aanmaken / openen";
  }

*/

?>
Gewijzigd op 01/01/1970 01:00:00 door Cake Masher
 
Joren de Wit

Joren de Wit

10/02/2007 12:41:00
Quote Anchor link
Quote:
ik heb het script wat verbeterd voor blanche..
Je doet het niet voor mij, maar natuurlijk voor jezelf ;)

Maar een tip die ik je nog mee wil geven: gebruik in de meeste gevallen gewoon enkele quotes, in dat geval hoef je de dubbele quotes die html nodig heeft niet te escapen.

Verder zou het natuurlijk ook wel fijn zijn om te controleren of een bestand niet al bestaat voordat je het overschrijft. Maw, als een email adres al bestaat moet daar een melding van gemaakt worden. Wat je zou kunnen doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if(file_exisits($_POST['mail'].'.html'))
{

    // bestand bestaat al
    // melding geven...

}
else
{
    // bestand bestaat nog niet
    // verder gaan met fopen()

}
?>


Verder vraag ik me af waarom je voor dit doeleinde geen database gebruikt. Het lijkt erop dat dit een typisch voorbeeld is waarin een database vele malen handiger is dan losse bestanden...
 
Jesse Degger

Jesse Degger

10/02/2007 12:43:00
Quote Anchor link
@rick,

omg!! het werkt :D

met 1 kleine aanpassing, het moest geen array zijn dus werdt het tot eindelijk:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);


$form="<html><body>\n";                                                                                        //Array setten.
$form.="<form method=POST action=" . $_SERVER['PHP SELF'] . ">\n";                                              //Array setten.
$form.="<textarea rows=3 name=text cols=24></textarea></p>\n";                                                  //Array setten.
$form.="<p>jouwn naam: <input type=text name=name size=20><br>\n";                                              //Array setten.
$form.="naar email: <input type=text name=mail size=20><br>\n";                                                 //Array setten.
$form.="&nbsp;</p>\n";                                                                                          //Array setten.
$form.="<p><input type=submit value=Verzenden name=B1><input type=reset value='Invoer wissen' name=B2></p>\n";  //Array setten.
$form.="</form>\n";                                                                                             //Array setten.
$form.="</body></html>\n";                                                                                      //Array setten.

echo "$form"; //laat de form zien.



if($_SERVER['REQUEST_METHOD'] == 'POST')
{

  $handle = fopen($_POST['mail'] .".html", "w");
  fwrite($handle, $_POST['text']);
  fclose($handle);
  echo "gelukt";
}



/* voor een vedere error afhandeling:

  if($handle = fopen($_POST['mail'] . ".html", "w")) {
    if(fwrite($handle, $_POST['text'])) {
       echo "Gelukt!";
       fclose($handle);
    } else {
      echo "Kon bestand " . $_POST['mail'] . ".html niet editen.";
    }
  } else {
    echo "Kon bestand " . $_POST['mail'] . ".html niet aanmaken / openen";
  }

*/

?>



@blanche ik gebruik geen database omdat me host een error geeft omdat ze het systeem aan het vernieuwen zijn, van MySql nogwat naar nogwat
Gewijzigd op 01/01/1970 01:00:00 door Jesse Degger
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.