Avatar billede unsafe Nybegynder
03. november 2005 - 19:26 Der er 30 kommentarer

Husk teksten ?

Hej,

Jeg har en tjekker på når man skal til at oprette en bruger, og hvis eksempelvis brugernavnet er optaget sender jeg en header location ting, eks: header("Location: opret.php?error=bruger"); , men så alt det man har skrevet er blevet slettet fra inputsne,

Er der en løsning så de kan blive ståene hvis man laver fejl i indtastningen?

Håber i forstår :)
Avatar billede jakobdo Ekspert
03. november 2005 - 19:27 #1
Du kan gemme data i en $_SESSION ?
Avatar billede jakobdo Ekspert
03. november 2005 - 19:27 #2
Er du med på ideen?
Avatar billede alaflam Nybegynder
03. november 2005 - 19:33 #3
sende det videre i Location.

header("Location: opret.php?error=bruger&user=unsafe");

og i input

<input name=brugernavn type=text value=<?=$_POST["user"]?>>
Avatar billede showsource Seniormester
03. november 2005 - 19:33 #4
Lidt ex. ved post:
<?php
session_start();

foreach($_POST as $key => $value) {
$_SESSION["posts"][$key] = strip_slashes($value);
}


// så laver du dine tjek. Og er det hele ok sletter du session igen.
unset($_SESSION["posts"]);

?>


Hvis det ikke er ok, og brugeren sendes tilbage, kan du tjekke om f.eks.
$_SESSION["posts"]["brugernavn"] er sat til feltet "brugernavn", og så evt. vise dens værdi.
Avatar billede unsafe Nybegynder
03. november 2005 - 19:49 #5
jakobdo > yes :)

showsource > Ahh, hvad skal jeg så skrive i inputtet
Avatar billede showsource Seniormester
03. november 2005 - 19:56 #6
ehh, det er
stripslashes() og IKKE strip_slashes() !!!

Men f.eks. med en funktion

function feltvalue($var) {
    if(isset($_SESSION["posts"][$var])) {
    echo" value=\"". htmlspecialchars($_SESSION["posts"][$var]) ."\"";
    unset($_SESSION["posts"][$var]);
    }
}

og så i tekstfeltet:

<input type="text" name="Brugernavn"<?php feltvalue("Brugernavn"); ?>>
Avatar billede unsafe Nybegynder
03. november 2005 - 20:43 #7
Mange tak. Prøver :)
Avatar billede unsafe Nybegynder
03. november 2005 - 20:46 #8
Der står ikke noget i feltet hvis der opstår fejl :o
Avatar billede jakobdo Ekspert
03. november 2005 - 20:53 #9
Prøv at vis os din kode?
Avatar billede unsafe Nybegynder
03. november 2005 - 20:53 #10
Hele min opret.php ?
Avatar billede jakobdo Ekspert
03. november 2005 - 21:01 #11
Det er jo muligvis nok letteste måde at hjælpe dig på! :o)
Om vi så kan hitte hoved og hale i det må tiden jo vise!
Avatar billede unsafe Nybegynder
03. november 2005 - 21:14 #12
Hehe okey her er den :

<?php
include("includes/mysql.php");
include("includes/functions.php");
include("includes/online.php");


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

$conn = mysql_query("SELECT * FROM users WHERE brugernavn = '$_POST[brugernavn]'");
$rs = mysql_fetch_array($conn);

$conn2 = mysql_query("SELECT * FROM users WHERE password = '$_POST[password]'");
$rs2 = mysql_fetch_array($conn2);

foreach($_POST as $key => $value) {
$_SESSION["posts"][$key] = $value;
}

if(mysql_num_rows($conn) !=0)
{

header("Location: opret.php?action=usertaken");

} elseif(!eregi("^[a-zA-Z0-9_]([-_.]?[0-9a-z]){2,15}$", $_POST["brugernavn"])) {

header("Location: opret.php?action=wronguser");

} elseif(empty($_POST["navn"])) {

header("Location: opret.php?action=nameempty");

} elseif(empty($_POST["efternavn"])) {

header("Location: opret.php?action=efterempty");

} elseif(empty($_POST["email"])) {

header("Location: opret.php?action=emailempty");

} elseif(!eregi("^[0-9a-z_]([-_\.+]?[0-9a-z])*@[0-9a-z][-.0-9a-z]*\\.[a-z]{2,3}[.]?$", $_POST["email"])) {

header("Location: opret.php?action=wrongmail");

} elseif(empty($_POST["brugernavn"])) {

header("Location: opret.php?action=userempty");

} elseif(!eregi("^[a-zA-Z0-9_]{4,20}$", $_POST["password"])) {

header("Location: opret.php?action=passempty");

} elseif($_POST["password"] != $_POST["password2"]) {

header("Location: opret.php?action=passdontmatch");

} elseif(empty($_POST["born_day"])) {

header("Location: opret.php?action=dayempty");

} elseif(empty($_POST["born_month"])) {

header("Location: opret.php?action=monthempty");

} elseif(empty($_POST["born_year"])) {

header("Location: opret.php?action=yearempty");

} elseif(empty($_POST["kon"])) {

header("Location: opret.php?action=konempty");

} else {

mysql_query("INSERT INTO users (navn, efternavn, email, brugernavn, password, born_day, born_month, born_year, born, kon, created, ip, host)
values('".htmlspecialchars($_POST["navn"])."',
'".htmlspecialchars($_POST["efternavn"])."',
'".htmlspecialchars($_POST["email"])."',
'".htmlspecialchars($_POST["brugernavn"])."',
'".htmlspecialchars($_POST["password"])."',
'".htmlspecialchars($_POST["born_day"])."',
'".htmlspecialchars($_POST["born_month"])."',
'".htmlspecialchars($_POST["born_year"])."',
'".$_POST["born_year"]."-".$_POST["born_month"]."-".$_POST["born_day"]."',
'".htmlspecialchars($_POST["kon"])."',
'".date("Y-m-d")."',
'".$_SERVER["REMOTE_ADDR"]."',
'".gethostbyaddr($_SERVER["REMOTE_ADDR"])."')");

header("Location: opret.php?action=sucess");

}

}

include("includes/top.php");

?>

<table cellspacing="0" cellpadding="2" style="width: 100%;">
<tr>
<td style="width: 100%; background: #BAFF78">
<b>Opret ny bruger</b>
</td>
</tr>
<tr>
<td style="width: 100%;">
For at oprette en bruger, skal du udfylde de få felter under dig.<br />
Vi anbefaler du er <b>12</b> år eller ældre for at oprette en profil, da der kan forkomme stødende materiale på siden<br /><br />
</td>
</tr>
</table>

<?php if($_GET["action"] == "usertaken") { print "<b>Brugernavnet er optaget. Vælg venligst et nyt</b><br><br>"; }
elseif($_GET["action"] == "wronguser") { print "<b>Brugernavnet er ikke gyldigt.<br />
Brugernavnet skal være mellem 2-15 bogstaver/tegn.<br />
Må kun indeholde bogstaver fra A-Z, tal fra 0-9 og disse tegn -_. i mellem 2 ord.</b><br /><br />"; }
elseif($_GET["action"] == "nameempty") { print "<b>Du mangler at udfylde dit navn mellem 2 og 20 bogstaver.</b><br><br>"; }
elseif($_GET["action"] == "efterempty") { print "<b>Du mangler at udfylde dit efternavn</b><br><br>"; }
elseif($_GET["action"] == "emailempty") { print "<b>Du mangler at udfylde din email adresse</b><br><br>"; }
elseif($_GET["action"] == "wrongmail") { print "<b>Den E-mail adresse du indtastet er ikke gyldig</b><br><br>"; }
elseif($_GET["action"] == "userempty") { print "<b>Du mangler at udfylde et brugernavn</b><br><br>"; }
elseif($_GET["action"] == "passempty") { print "<b>Passwordet er ikke gyldigt.<br />
Passwordet skal være mellem 4-20 bogstaver/tegn.<br />
Må kun indeholde bogstaver fra A-Z, tal fra 0-9..</b><br><br>"; }
elseif($_GET["action"] == "passdontmatch") { print "<b>Dine password's matcher ikke</b><br><br>"; }
elseif($_GET["action"] == "dayempty") { print "<b>Du mangler at udfylde hvilken dag du blev født</b><br><br>"; }
elseif($_GET["action"] == "monthempty") { print "<b>Du mangler at udfylde hvilken måned du blev født i</b><br><br>"; }
elseif($_GET["action"] == "yearempty") { print "<b>Du mangler at udfylde hvilket årstal du blev født i</b><br><br>"; }
elseif($_GET["action"] == "konempty") { print "<b>Du mangler at udfylde hvilket køn du er</b><br><br>"; }
elseif($_GET["action"] == "sucess") { print "<b><font color=green>Tillykke $_POST[brugernavn], du er nu medlem :)</font></b><br><br>"; }
?>

    <script language="JavaScript" type="text/javascript">

    function DisableEnable(){
    if (document.opret.sYS_GeneralTOS_Agreement.checked) {
    document.opret.next.disabled = false;
    }
    else{
        document.opret.next.disabled = true;
    }
}
    </script>

<form method="post" action="opret.php" name='opret'>

<table cellspacing="0" cellpadding="0" style="width: 100%;">
<tr>
<td style="width: 20%;">
<b>Fornavn:</b>
</td>
<td style="width: 80%;">
<input type="text" name="navn" <?php feltvalue("navn"); ?> size="40" maxlength="50" />
</td>
</tr>

<tr>
<td style="width: 20%;">
<b>Efternavn:</b>
</td>
<td style="width: 80%;">
<input type="text" name="efternavn" size="40" maxlength="100" />
</td>
</tr>

<tr>
<td style="width: 20%;">
<b>E-mail:</b>
</td>
<td style="width: 80%;">
<input type="text" name="email" size="40" maxlength="100" />
</td>
</tr>

<tr>
<td style="width: 20%;">
<b>Brugernavn:</b>
</td>
<td style="width: 80%;">
<input type="text" name="brugernavn" size="40" maxlength="25" />
</td>
</tr>

<tr>
<td style="width: 20%;">
<b>Kodeord:</b>
</td>
<td style="width: 80%;">
<input type="password" name="password" size="40" maxlength="25" />
</td>
</tr>

<tr>
<td style="width: 20%;">
<b>Gentag Kodeord:</b>
</td>
<td style="width: 80%;">
<input type="password" name="password2" size="40" maxlength="25" />
</td>
</tr>

<tr>
<td style="width: 20%;">
<b>Fødselsdag</b>
</td>
<td style="width: 80%;">
<select name="born_day">
<option value="">Dag</option>
<?php for ($i=0; $i < 31; $i++) {?>
<option value="<?=$i +1?>"><?=$i +1?></option>
<?php }?>
</select>

<select name="born_month">
<option value="">Måned</option>
<option value="1">Januar</option>
<option value="2">Februar</option>
<option value="3">Marts</option>
<option value="4">April</option>
<option value="5">Maj</option>
<option value="6">Juni</option>
<option value="7">Juli</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">December</option>
</select>

<select name="born_year">
<option value="">År</option>
<?php for ($i=0; $i < 80; $i++) {?>
<option value="<?=(-($i - (date("Y") - 10)));?>"><?=(-($i - (date("Y") - 10)));?></option>
<?php }?>
</select>
</td>
</tr>

<tr>
<td style="width: 20%;">
<b>Køn:</b>
</td>
<td style="width: 80%;">
<input type="radio" name="kon" value="Dreng"  class="inputRadio" />Dreng/mand <input type="radio" name="kon" value="Pige"  class="inputRadio" />Pige/kvinde
</td>
</tr>

<tr>
<td style="width: 20%;">
<b>Betingelser:</b>
</td>
<td style="width: 80%;">
<a href="#" onclick="window.open('regler.php','regler','width=650,height=340,resizable=yes,scrollbars=yes,status=yes');return false;">Læs reglerne her</a>&nbsp;&nbsp;|&nbsp;&nbsp;Bekræft: <input type="checkbox" name='sYS_GeneralTOS_Agreement' value="yes" onclick="DisableEnable();" class="radio" /><br />
</td>
</tr>
</table>
<br /><br />
<input name="next" type="submit" value="Tilmeld mig!" /><script language="javascript" type="text/javascript">DisableEnable();</script>

</form>

<?php

include("includes/bund.php");

?>

Og der er så i functions.php jeg har

function feltvalue($var) {
    if(isset($_SESSION["posts"][$var])) {
    echo" value=\"". htmlspecialchars($_SESSION["posts"][$var]) ."\"";
    unset($_SESSION["posts"][$var]);
    }
}
Avatar billede jakobdo Ekspert
05. november 2005 - 09:16 #13
Mangler du ikke at indlæse værdierne fra din $_POST's?
Som jeg ser det mangler du at kalde funktionen feltvalue().
Den skal jo kaldes når der er submittet.
Ellers kan tingene ikke blive gemt i første omgang.
Avatar billede unsafe Nybegynder
05. november 2005 - 10:35 #14
Havde jeg gjort ved navn, men ville bare ikke gøre det ved at det andet før jeg vidste om det virkede :).

Jeg har funktionen feltvalue i functions.php :O
Avatar billede unsafe Nybegynder
08. november 2005 - 01:23 #15
Hallo?
Avatar billede jakobdo Ekspert
08. november 2005 - 07:54 #16
Jeg har lige lavet et lille eksempel til dig!
(dog med stor hjælp fra showsource)

<?php
//File: 661592.php
//http://exp.dk/spm/661592
session_start();

function feltvalue($var)
{
    $output = "";
    if(isset($_SESSION["posts"][$var]))
    {
        $output = " value=\"". htmlspecialchars($_SESSION["posts"][$var]) ."\"";
        unset($_SESSION["posts"][$var]);
    }
    return $output;
}

echo "<form action=\"661592-2.php\" method=\"post\">\n";
echo "<input type=\"text\" name=\"husk\"".feltvalue("husk").">\n";
echo "<input type=\"submit\" name=\"submit\" value=\"HUSK MIG\">\n";
echo "</form>\n";

?>

<?php
//File: 661592-2.php
//http://exp.dk/spm/661592
session_start();

if(isset($_POST["submit"]))
{
    foreach($_POST as $key => $value)
    {
        $_SESSION["posts"][$key] = stripslashes($value);
    }
   
    if(preg_match('/\\d/', $_SESSION["posts"]["husk"]))
    {
        //Værdien indeholdet et tal, det må den ikke...
        header("location: 661592.php");
        exit();
    }
    else
    {
        echo "Det er ok: " . $_SESSION["posts"]["husk"] . "<br>";
    }
}

echo "<a href=\"661592.php\">Tilbage</a>";

?>
Avatar billede showsource Seniormester
08. november 2005 - 12:49 #17
Og ved evt. fejl skal session så lige slettes: :O)

    if(preg_match('/\\d/', $_SESSION["posts"]["husk"]))
    {
        //Værdien indeholdet et tal, det må den ikke...
        unset($_SESSION["posts"]["husk"]);
        header("location: 661592.php");
        exit();
    }
Avatar billede jakobdo Ekspert
08. november 2005 - 12:50 #18
Crap, ja det glemte jeg jo lige! :o)
Avatar billede unsafe Nybegynder
08. november 2005 - 16:18 #19
Hvis jeg prøver dit eksempel virker det, men ikke når jeg tester det på min opret.php.
Avatar billede jakobdo Ekspert
08. november 2005 - 16:21 #20
Så kunne det jo tyde på du har lavet noget forkert!
Prøv at start med et felt ad gangen.
Avatar billede unsafe Nybegynder
08. november 2005 - 16:39 #21
Det har jeg, startet med navn, og hvis vi nu siger at jeg ikke udfylder brugernavn sender den jo en header, men navnet står ikke i felet navn :-(

Har den nye funktion i functions.php & har foreach løkken, efter if($_SERVER["REQUEST_METHOD"] == "POST") {
Avatar billede jakobdo Ekspert
08. november 2005 - 18:12 #22
Prøv at smid dette i bunden af din kode:
<?
echo "<hr>";
show_source(__FILE);
?>

og smid et link til din side.
Avatar billede unsafe Nybegynder
09. november 2005 - 00:16 #23
Avatar billede jakobdo Ekspert
09. november 2005 - 10:45 #24
Mangler du ikke:
<?
echo "<hr>";
show_source(__FILE);
?>
Avatar billede unsafe Nybegynder
09. november 2005 - 14:06 #25
Nej den har jeg sat nederst, men der kommer ingen kode som du kan se.
Avatar billede showsource Seniormester
10. november 2005 - 10:27 #26
Sidder lige og prøver lidt af her, men for s.... da, hvad er der galt her?
Kan ikke få den til at vise "selected" for born_day, selvom session born_day har $value ???

<?php
session_start();

function feltvalue($var, $value="", $valuetext="checked")
{
    $output = "";
    if(isset($_SESSION["posts"][$var]))
    {

        if(empty($value))
        {
        $output = " value=\"". htmlspecialchars($_SESSION["posts"][$var]) ."\"";
        }else{
            if($value == "textarea") {
            $output = htmlspecialchars($_SESSION["posts"][$var]);
            }else{
                if($_SESSION["posts"][$var] == $value) {
                $output = " ". $valuetext;
                }
            }
        }
    unset($_SESSION["posts"][$var]);
    }
    return $output;
}


if(isset($_POST["dopost"]))
{
    foreach($_POST as $key => $value)
    {
        $_SESSION["posts"][$key] = stripslashes($value);
    }
header("Location:". $_SERVER["PHP_SELF"]);
exit;
}

print_r($_SESSION);


?><p>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<input type="hidden" name="dopost" value="true">
<input type="text" name="navn"  size="40" maxlength="50"<?php echo feltvalue("navn"); ?> />
<br />
<select name="born_day">
<option value="">Dag:</option>
<?php
for($d = 1; $d <= 31; $d++) {
echo"<option value=\"". $d ."\"". feltvalue("born_day", $d, "selected") .">". $d ."</option>\r\n";
}
?>
</select>
<select name="born_year">
<option value="">&Aring;r:</option>
<?php
for($y = (date("Y")-12); $y > (date("Y")-80); $y--) {
echo"<option value=\"". $y ."\"";
    if(isset($_SESSION["posts"]["born_year"]) && $_SESSION["posts"]["born_year"] == $y) {
    echo" selected";
    unset($_SESSION["posts"]["born_year"]);
    }
echo">". $y ."</option>\r\n";
}
?>
</select>

<p>
<textarea name="fuldtekst" rows="12" cols="32"><?php echo feltvalue("fuldtekst", "textarea"); ?></textarea>
<p>   
<input type="submit">
</form>
Avatar billede unsafe Nybegynder
10. november 2005 - 16:07 #27
Okey :O

Jeg syntes bare det er mærkeligt det ikke vorker for mig :-(
Avatar billede jakobdo Ekspert
10. november 2005 - 16:49 #28
showsource, det er ikke fordi det skal være: selected="selected" ??
Avatar billede unsafe Nybegynder
11. november 2005 - 01:33 #29
I har set min kode + siden det er på, jeg har prøvet med jeres kode og det virker, men ikke så snart jeg tilføjer det til min side.
Avatar billede unsafe Nybegynder
16. november 2005 - 16:04 #30
http://unsafe.dk/opret2.php

Så ændret det til __FILE__ så kom koden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester