Hvor blir variablen glemt????

Tags:    php

Hey der, jeg er rimelig nybegynder i PHP, men har sadt mig for at lære det fra bunden.
Og her støder jeg så ind i det først problem, har i flere tutorials skulle få dette til at virke men det virker aldrig, hverken på min egen server eller hos min host.

et kode eks. fra en artikel her på siden.

<form method="POST" action="<?php $PHP_SELF;?>">
Dit navn:
<input type="text" name="navn">
<input type="submit" name="sendt" value="ok">
</form>
<?
if($sendt) {
echo "Dit navn er ".$navn;
}
?>

Ideen er jo at PHP skal huske variablen SENDT og tjekke når siden reloader om den er der og i givne tilfælde skrive variablen
$navn
Men det virker ikke, den glemmer variablen.
hvad går der galt??????????



6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato

Okay, tak for det, det havde jeg så egenligt fundet ud af, men var bare ikke sikker på at det var rigtigt. For her har jeg så noget andet kode jeg har lavet hvor jeg bruger det, men det virker stadig ikke som jeg vil ha' det til.

KODEEKS.:

<?php
$name = $_POST['name'];
$mail = $_POST['email'];
$sex = $_POST['sex'];


if ($_POST['sendt']) {
$db = mysql_connect ("localhost", "xxxxx", "xxxxx");
mysql_select_db ("edh", $db);
mysql_query("INSERT INTO edh_user (name, email, sex) VALUES('$name','$mail','$sex')") or die (mysql_error());
echo "Dine data er blevet gemt";
}
else
{

echo "Navn: ".$name."";
echo "Email: ".$mail."";
echo "Køn: ".$sex."";

echo "Er dette rigtigt";
echo "<form action=\\"$PHP_SELF\\" method=\\"post\\"><input type=\\"submit\\" value=\\"JA\\" name=\\"sendt\\"></form>";
}
?>

Det er en side sendt fra en FORM, og ideen er så at den skal spørge om man er sikker på at data'ene er rigtige, og hvis man så trykker "JA" i FORM'en på denne side så bliver data'ene skrevet i databasen, men men men den skriver bare tomme felter i min database?????
www.sjagget.dk


Når brugeren kommer ind på siden hvor han skal svare om det er rigtigt ligger hans data i $_POST['name'], $_POST['email'] og $_POST['sex'].
Men de bliver ikke ved med at ligge der når du går videre til en anden side, så når han klikker på JA knappen vil disse variabler ikke længere være sat.

Du kan lave nogle skjulte felter så de også bliver sendt med, når han klikker JA.

Følgende burde virke:
Fold kodeboks ind/udKode 


Hilsen

Martin Dybdal (Dybber)



Hey der, jeg er rimelig nybegynder i PHP, men har sadt mig for at lære det fra bunden.
Og her støder jeg så ind i det først problem, har i flere tutorials skulle få dette til at virke men det virker aldrig, hverken på min egen server eller hos min host.

et kode eks. fra en artikel her på siden.

<form method="POST" action="<?php $PHP_SELF;?>">
Dit navn:
<input type="text" name="navn">
<input type="submit" name="sendt" value="ok">
</form>
<?
if($sendt) {
echo "Dit navn er ".$navn;
}
?>

Ideen er jo at PHP skal huske variablen SENDT og tjekke når siden reloader om den er der og i givne tilfælde skrive variablen
$navn
Men det virker ikke, den glemmer variablen.
hvad går der galt??????????



du skal bruge

if($_POST['sendt']) {
echo "Dit navn er ".$_POST['$navn'];
}

Hilsen

Martin Dybdal (Dybber)



Hey der, jeg er rimelig nybegynder i PHP, men har sadt mig for at lære det fra bunden.
Og her støder jeg så ind i det først problem, har i flere tutorials skulle få dette til at virke men det virker aldrig, hverken på min egen server eller hos min host.

et kode eks. fra en artikel her på siden.

<form method="POST" action="<?php $PHP_SELF;?>">
Dit navn:
<input type="text" name="navn">
<input type="submit" name="sendt" value="ok">
</form>
<?
if($sendt) {
echo "Dit navn er ".$navn;
}
?>

Ideen er jo at PHP skal huske variablen SENDT og tjekke når siden reloader om den er der og i givne tilfælde skrive variablen
$navn
Men det virker ikke, den glemmer variablen.
hvad går der galt??????????



du skal bruge

if($_POST['sendt']) {
echo "Dit navn er ".$_POST['$navn'];
}

Hilsen

Martin Dybdal (Dybber)


Okay, tak for det, det havde jeg så egenligt fundet ud af, men var bare ikke sikker på at det var rigtigt. For her har jeg så noget andet kode jeg har lavet hvor jeg bruger det, men det virker stadig ikke som jeg vil ha' det til.

KODEEKS.:

<?php
$name = $_POST['name'];
$mail = $_POST['email'];
$sex = $_POST['sex'];


if ($_POST['sendt']) {
$db = mysql_connect ("localhost", "xxxxx", "xxxxx");
mysql_select_db ("edh", $db);
mysql_query("INSERT INTO edh_user (name, email, sex) VALUES('$name','$mail','$sex')") or die (mysql_error());
echo "Dine data er blevet gemt";
}
else
{

echo "Navn: ".$name."";
echo "Email: ".$mail."";
echo "Køn: ".$sex."";

echo "Er dette rigtigt";
echo "<form action=\\"$PHP_SELF\\" method=\\"post\\"><input type=\\"submit\\" value=\\"JA\\" name=\\"sendt\\"></form>";
}
?>

Det er en side sendt fra en FORM, og ideen er så at den skal spørge om man er sikker på at data'ene er rigtige, og hvis man så trykker "JA" i FORM'en på denne side så bliver data'ene skrevet i databasen, men men men den skriver bare tomme felter i min database?????
www.sjagget.dk




Okay, tak for det, det havde jeg så egenligt fundet ud af, men var bare ikke sikker på at det var rigtigt. For her har jeg så noget andet kode jeg har lavet hvor jeg bruger det, men det virker stadig ikke som jeg vil ha' det til.

KODEEKS.:

<?php
$name = $_POST['name'];
$mail = $_POST['email'];
$sex = $_POST['sex'];


if ($_POST['sendt']) {
$db = mysql_connect ("localhost", "xxxxx", "xxxxx");
mysql_select_db ("edh", $db);
mysql_query("INSERT INTO edh_user (name, email, sex) VALUES('$name','$mail','$sex')") or die (mysql_error());
echo "Dine data er blevet gemt";
}
else
{

echo "Navn: ".$name."";
echo "Email: ".$mail."";
echo "Køn: ".$sex."";

echo "Er dette rigtigt";
echo "<form action=\\"$PHP_SELF\\" method=\\"post\\"><input type=\\"submit\\" value=\\"JA\\" name=\\"sendt\\"></form>";
}
?>

Det er en side sendt fra en FORM, og ideen er så at den skal spørge om man er sikker på at data'ene er rigtige, og hvis man så trykker "JA" i FORM'en på denne side så bliver data'ene skrevet i databasen, men men men den skriver bare tomme felter i min database?????
www.sjagget.dk


Når brugeren kommer ind på siden hvor han skal svare om det er rigtigt ligger hans data i $_POST['name'], $_POST['email'] og $_POST['sex'].
Men de bliver ikke ved med at ligge der når du går videre til en anden side, så når han klikker på JA knappen vil disse variabler ikke længere være sat.

Du kan lave nogle skjulte felter så de også bliver sendt med, når han klikker JA.

Følgende burde virke:
Fold kodeboks ind/udKode 


Hilsen

Martin Dybdal (Dybber)


Okay, mange tak for det, det virkede.
Koden er både noget jeg måske skal bruge og også for at lære.
Du for point fordi det virkede.
Men lige et spørgsmål du evt. kan besvare.
Variablerne blev jo husket fra den først side, men glemt da jeg brugte $PHP_SELF, til at reloade siden efter et tryk på knappen.
så spørgsmålet er, husker PHP kun variablerne når man sender til fra en form til en anden???, og er de derefter glemt hvis man som jeg reloadede siden. Skal man altid gøre sådan noget HIDDEN stuff???
Jeg blev bare lidt skuffet og irriteret da jeg endelig besluttede mig for at lære det for alvor, og så de første PHP tutorials jeg kører igennem ikke virker, snøft *GGGG*
Men er det levn fra tidligere versioner eller???
Har stødt ind i den simple linie
if ($submit)
i flere tutorials.

Nå, men point til dig, tak for det ;-)
www.sjagget.dk



Men lige et spørgsmål du evt. kan besvare.
Variablerne blev jo husket fra den først side, men glemt da jeg brugte $PHP_SELF, til at reloade siden efter et tryk på knappen.
så spørgsmålet er, husker PHP kun variablerne når man sender til fra en form til en anden???, og er de derefter glemt hvis man som jeg reloadede siden. Skal man altid gøre sådan noget HIDDEN stuff???

Når du sender noget via en form kan du kun se dem på den side som formen bliver sendt hen til. Hvis du efter følgende går ind på en anden side er de således ikke sendt videre over til den. Håber det var svar nok.

Jeg blev bare lidt skuffet og irriteret da jeg endelig besluttede mig for at lære det for alvor, og så de første PHP tutorials jeg kører igennem ikke virker, snøft *GGGG*
Men er det levn fra tidligere versioner eller???
Har stødt ind i den simple linie
if ($submit)
i flere tutorials.


Det kan indstilles så du kan gøre det, men jeg vil ikke anbefale det. Jeg tror det var standard at man kunne tidligere.
For at slå det til skal du ændre
register_globals = Off
til
register_globals = On

i php.ini, men det vil jeg ikke gøre hvis jeg var dig. Det giver brugeren mulighed for at indstille variabler som måske ikke var tiltænkt. Jeg har fx set en hjemmeside hvor jeg kunne logge ind som hvilken som helst bruger ved at skrive index.php?online=brugernavn


Hilsen

Martin Dybdal (Dybber)



Jeg takker mange gange, fik jeg en hel del mere viden ud af ;-)

www.sjagget.dk



t