Jacob har ret det der vil ikke gøre noget som helst ved session. For at sætte variabler i session udfra bruger input er der 2 måder, den ene er via en form og den anden er via selve linket. Fra links kan du hente værdier på den side der bliver linket til i $_GET, f.eks. ville du med linket www.bla.dk/test.php?id=1
kunne hente værdien 1 i $_GET['id'] i filen test.php.
Fra forme kan du alt afhængig af om form attributten method er sat til get eller post kunne hente fra værdier fra enten $_GET eller $_POST. I den side der bliver referet til i formens action attribut. f.eks. ville de med følgende form:
<FORM method="post" action="test.php">
<input name="navn" value="">
<input type="submit" value="Click Me!" name="submit">
</form>
vil du i filen test.php kunne hente værdien der er blevet skrevet i feltet med attributet name sat til navn i $_POST['navn'].
For at sætte en værdi i session under 'navn' skal du så i test.php, hvis du f.eks. bruger formen skrive følgende.
$_SESSION['navn']=$_POST['navn'];
De to indeks strenge behøver selvfølgelig ikke at være de samme.
Hvis der er noget error testing på om det som bliver skrevet i en form er korrekt, vil det være venligt når du genviser formen at du selv udfylder alle de felter der var korrekte dette kan gøres ved at rette form koden til:
<FORM method="post" action="test.php">
<input name="navn" value="<?echo $_POST['navn']?>">
<input type="submit" value="Click Me!" name="submit">
</form>
skal selvfølgelig være $_GET hvis formens method er sat til get og ikke post som i eksemplet. Så skal du bare huske at i din php kode i test.php at sætte et indeks i $_POST til "" hvis der er forkert udfyldt f.eks:
if($_POST['navn']=="ulovlig værdi"){
$_POST['navn']="";
}
Såfremt man laver sådan noget skal man huske lige at skrive til brugeren hvad fejlen er i den udfyldte form, dette kan enten gøres i toppen af formen eller ved siden af feltet der er forkert, hvis vi antager du vil skrive det ved siden af feltet kunne de sætte en variable kalde $error_navn i if sætningen til at holde fejlbeskeden kunne se således ud:
$error_navn="";
if($_POST['navn']=="ulovlig navn"){
$_POST['navn']="";
$error_navn="Dit navn må ikke være:ulovligt navn"
}
så kunne form koden se ud som følger
<FORM method="post" action="test.php">
<input name="navn" value="<?echo $_POST['navn']?>"><? echo $error_navn?>
<input type="submit" value="Click Me!" name="submit">
</form>
Dette vil dog kræve at test.php indeholder eller includer koden til formen. og at den kommer efter valideringen af inputet. Det kan simplest skrives således her:
test.php
<?
if(isset($_POST['submit'])&&$_POST['submit']=="Click Me!"){
//Den kode vil blive eksekveret når submit knappen bliver
//af brugeren, koden bliver kørt på serveren
$has_errors=false;
if($_POST['navn']=="ulovlig navn"){
$_POST['navn']="";
$error_navn="Dit navn må ikke være:ulovligt navn"
$has_errors=true;
}
/*hvis og kun hvis at den udfyldte form ingen fejl har
bruger man værdierne den blev udfyldt med til det man
ønskede, dette kan gøres ved at teste på as $has_errors
er false, denne skal sættes til true hvis fejl bliver
opdaget*/
if($has_errors===False){
$_SESSION['navn']=$_POST['navn'];
/*efter som formen var korrekt vil du formentlig vise
en anden side, dette kan gøres ved redirect med header
functionen
*/
header("Location:anden_side.php");
}
}
/*Såfremt at formen ikke er submittet eller ikke korrekt
vises formen
*/
?>
<FORM method="post" action="test.php">
<input name="navn" value="<?echo $_POST['navn']?>"><? echo $error_navn?>
<input type="submit" value="Click Me!" name="submit">
</form>
}
Indlæg senest redigeret d. 08.12.2007 08:22 af Bruger #5620