klein probleempje

Status
Niet open voor verdere reacties.

ruby159

Gebruiker
Lid geworden
6 jan 2007
Berichten
98
hey,

ik heb een probleem met een schijf actie in een tekstbestand

dit is mijn script:
PHP:
<?php error_reporting(0);?>
<?php include ("inc_connect_sqlite.php");?>
<?php include ("inc_logged_in.php");?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<p align="center"><img src="images/banner.gif" width="1200" height="200" />
  <?php 
$myFile = "rcon.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "rcon_password $_POST[rcon]\n";
fwrite($fh, $stringData);
fclose($fh); 
?>
<form id="form1" name="form1" method="post" action="">
  <p>Rcon password:
    <input type="password" name="rcon" id="rcon"/>
</p>
  <p>
    <input type="submit" name="send" id="send" value="Submit" />
    <input type="reset" name="clear" id="clear" value="Reset" />
  </p>
</form>
  <p><a href="index.php">Back to index  </a></p>
  <p>Copyright ©  2007 Ruby159</p>
<p>&nbsp; </p>
</body>
</html>

Het werkt allemaal prima hij schijft netjes in rcon.txt

MAAR

Hij gaat ook schrijven als je niks invult en niet op de button klikt:confused:

Hoe kan ik het maken dat php alleen gaat schrijven als er op de button geklikt word (ik denk persoonlijk dat het makkelijk optelossen is maar ik kan er niet zo op komen)

(ps. als ik het alles wat in form staat boven het schijf scripts plaats gaat ie ook schijven zonder dat er op de button word geklikt)

Ruby:thumb:
 
PHP:
if ($_POST['send'] == 'submit'){
   //voer de code uit die in het bestand schrijft...
}
 
bedankt ik ga het nu proberen:thumb:

resultaat

hmm lijkt niet echt te werken nu schrijft ie helemaal niet meer
code:
PHP:
<?php error_reporting(0);?>
<?php include ("inc_connect_sqlite.php");?>
<?php include ("inc_logged_in.php");?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<p align="center"><img src="images/banner.gif" width="1200" height="200" />
<form id="form1" name="form1" method="post" action="">
  <p>Rcon password:
    <input type="password" name="rcon" id="rcon"/>
</p>
  <p>
    <input type="submit" name="send" id="send" value="Submit" />
    <input type="reset" name="clear" id="clear" value="Reset" />
  </p>
</form>
  <?php
if ($_POST['send'] == 'submit'){  
$myFile = "rcon.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "rcon_password $_POST[rcon]\n";
fwrite($fh, $stringData);
fclose($fh); 
}
?>
  <p><a href="index.php">Back to index  </a></p>
  <p>Copyright ©  2007 by Rpanel of Ruby159</p>
<p>&nbsp; </p>
</body>
</html>

of staat het soms niet op de goede plek?

Ruby
 
Laatst bewerkt:
Beste Ruby,

Je moet in ieder geval even een action="" invullen :). Zonder daar wat in te vullen werkt het wel, maar klopt het niet. Dat iets werkt komt doordat browser sommige dingen lief interpreteren. Dat doen niet alle browsers, dus kun je het resultaat niet voorspellen. Als je de pagina waar je op bent wilt hebben als action dan kun je het volgende gebruiken:
PHP:
    action="<?php echo $_SERVER['PHP_SELF']; ?>"

Ook in het geval van $_POST["send"] geldt weer dat het vaak wel werkt, maar niet klopt. De browser hoeft de waarde uit je Submit button enkel te versturen als deze ook daadwerkelijk gebruikt is om je form te submitten. Als je dus op enter drukt in je password veld dan doet de Submit button niks, dus hoeft zijn waarde niet meegestuurd. FF stuurt de waarde altijd mee. IE7 niet.

Om te zorgne dat je code dus enkel wordt uitgevoerd wanneer een password is ingevuld, zet je het volgende if blok eromheen:
PHP:
if( (isset($_POST["rcon"])) && ($_POST["rcon"]!="") ){
   // hier je code die alleen wanneer er iets is ingevuld moet worden uitgevoerd
}

Meer info over <form> staat in de topic van afgelopen week: http://www.helpmij.nl/forum/showthread.php?t=311726

Ik denk dat dat je vraag oplost.

Wout
 
Hey w.sickman

Ik ging het uitproberen, alleen ik wist niet waar ik
PHP:
 action="<?php echo $_SERVER['PHP_SELF']; ?>"
moest plaatsen dus ik denk eerst even alleen proberen met dit:
PHP:
if( (isset($_POST["rcon"])) && ($_POST["rcon"]!="") ){
   // hier je code die alleen wanneer er iets is ingevuld moet worden uitgevoerd
}

Zo doet ie het goed hij schijft alleen als er iets in staat:thumb:
maar zal dat goed zo blijven werken of want ik gebruik FF zal dit in IE7 niet werken

Ruby
 
PHP:
<form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

daar dus =)
 
bedankt waar weet jij mischien of het zonder dat goed werkt want ik heb het zonder dat en het werkt goed of zitten daar nog nadelen aan
 
Het werkt vooral niet meer als je een andere pagina wilt aanroepen.
Je geeft je form namelijk aan waar hij zijn gegevens heen moet sturen, dus wat de volgende stap is.

Ik zou je aanraden het toe te voegen, zodat je eraan gewend raakt en je het volgende keren niet vergeet =)

Of het goed werkt zonder? Geen idee.... kennelijk?
 
ok ik voeg het wel toe:thumb:

en zonder dat werkt het prima

Ruby
 
Hey Ruby,

Hier even het handboek van het W3C. Hierin staat beschreven hoe de HTML code moet worden geinterpreteerd:
http://www.w3.org/TR/html4/interact/forms.html#adef-action
Zoals je ziet is de werking van een waarde anders dan een URL niet vastgesteld. Dat betekent niet dat het persé niet werkt, maar betekent wel dat je niet weet hoe het werkt. :).

Zeer mooi dat je het hebt toegepast :thumb:

Wout
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan