Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Je geeft door gebruik te blijven maken van deze website, of door op 'akkoord' te klikken, toestemming voor het gebruik van cookies. Als je op 'niet akkoord' klikt wordt je doorgestuurd naar een cookievrije versie van de website met minder functionaltieit. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

php script naar start door op submit te klikken

Pagina: 1

Acties:
Reacties: 8
Reg. datum: 09-04-2012

Hallo iedereen,

Ik ben al een paar uur aan het knoeien met php. Ik ben het nog wat aan het leren door verschillende kleine oefeningen te maken.

Ik heb al een inlogscherm gemaakt dat me doorstuurt naar naar een meerkeuzemenu als ik de juiste gegevens heb ingevoerd. Nu wil ik dat de waarde wordt weergegeven van mijn meerkeuzemenu nadat ik op send heb geklikt. Indien niets geselecteerd verschijnt er "Niets geselecteerd" op het scherm.

Het probleem is dat nadat ik op send klik ik terug naar mijn inlogmenu ga. Dus terug naar het begin van mijn php code.

Heeft iemand een idee wat ik fout doe? Ik heb zelfs alles in commentaar onder de send knop en zelfs dan springt deze terug naar het begin.
PHP:
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
45
46
<form action="quotes_database.php" method="post">
<?php


if((!isset($_POST['login'])) || (isset($_POST['return'])))
{
    echo "Username:<input type=\"text\" name=\"username\" id=\"username\"/><br/>";
    echo "Password:<input type=\"text\" name=\"password\" id=\"password\"/><br/>";
    echo "<input type=\"submit\" value=\"login\" name=\"login\" id=\"login\"/><br/>";
}
else
{
    if((isset($_POST['username'])) && ($_POST['username'] == "Kevin") && (isset($_POST['password'])) && ($_POST['password'] == "test"))
    {
        echo "<input type=\"radio\" name=\"status\" value=\"add\"/>Add<br/>";
        echo "<input type=\"radio\" name=\"status\" value=\"remove\"/>Remove<br/>";
        echo "<input type=\"radio\" name=\"status\" value=\"edit\"/>Edit<br/>";
        echo "<input type=\"submit\" value=\"send\" name=\"send\" id=\"send\"/><br/>";
        
        if(isset($_POST['send']))  // vanaf hier gaat hij terug naar het begin
        {
            if(isset($_POST['status']))
            {
                $var_action = $_POST['status'];
                echo $var_action;            //output om te debuggen
            }
                else
                {
                    echo "Niets geselecteerd";
                }
        }
        
    }
        
    }
    
            else 
            {
                echo "Niet correct!!!";
                echo "<input type=\"submit\" value=\"return\" name=\"return\" id=\"return\">";
            }
            
    
}
?>
</form>

Reacties: 682
Reg. datum: 21-03-2007

Je POST vars zijn alleen beschikbaar na POSTEN, bij elke volgende page hit zijn die weer weg.

Je hebt sessies nodig, maar ik denk dat je waarschijnlijk het beste een goeie tutorial over PHP en inloggen kunt volgen, 1 waarbij ook meteen gekeken wordt naar escapen etc.

Zoiets:
http://www.phpeasystep.com/phptu/6.html

Zitten je users en wachtwoorden ook meteen in een database.

Navi wijzigde deze reactie 09-04-2012 13:45 (8%)

Alles voor je konijntje op www.konino.nl

Dit is Hans. Hans is een rund.
Reacties: 7.769
Reg. datum: 04-09-2010

Je POST vars komen bij de tweede post altijd op een false terecht, aangezien de username en wachtwoord dan niet meer zijn geset.

Probeer eens cookies of sessies te zetten, en daar op checken.

I don't have OCD. I have CDO. It's the same, but with the letters in the right order.
Ja, ik haat Facebook.

Reacties: 1.800
Reg. datum: 18-02-2011

Twee andere tips:
1. Je script zal sneller zijn als je html gewoon als html laat:
PHP:
1
2
3
4
5
6
7
<?PHP
if(1==1):
?>
<h1>goed</h1>
<?PHP
endif;
?>

2. Als je dan toch HTML opneemt in je echo dan kan je beter enkele quotes gebruiken:
PHP:
1
2
3
<?PHP
echo '<input type="submit" value="return" id="return" />';
?>

Dan hoef je dus ook niet de hele tijd te escapen. Ten tweede zijn enkele quotes sneller omdat binnen enkele quotes geen variabelen mogen voorkomen:
PHP:
1
2
3
4
<?PHP
$dag = 'maandag';
echo 'Het is vandaag $dag';
?>

Uitvoer: Het is vandaag $dag
PHP:
1
2
3
4
<?PHP
$dag = 'maandag';
echo "Het is vandaag $dag";
?>

Uitvoer: Het is vandaag maandag
PHP:
1
2
3
4
<?PHP
$dag = 'maandag';
echo 'Het is vandaag '.$dag;
?>

Uitvoer: Het is vandaag maandag

Bij het voorbeeld van de dubbele aanhalingstekens zal PHP dus de hele zin moeten analyseren om te kijken of er een variabele tussen staat. Wanneer je enkele quotes gebruikt, zal PHP de zin gewoon uitvoeren totdat je expliciet je zin onderbreekt door de quotes af te sluiten zoals in het laatste voorbeeld. Dat maakt je script sneller en je maakt minder snel fouten.

http://www.flickr.com/curlymo/ | aub geen vragen via PM die ook in het forum gesteld kunnen worden

Reacties: 8
Reg. datum: 09-04-2012

Bedankt voor de tips allemaal. Ik ga ze allemaal eens uitproberen. Voor deze oefening ga ik dan gewoon mijn inlogscherm weglaten dan zou het normaal moeten werken.
Reacties: 14.588
Reg. datum: 24-04-2000

quote:
Hoewel ik zelf een hekel heb aan dubbele quotes in PHP is je verhaal over het sneller zijn redelijk overbodig, als je snelheidswinst uit dat soort dingen moeten komen dan moet je site wel extreem successvol zijn, vele benchmarks hebben volgens mij allang aangetoond dat dit soort optimalisaties gaan over duizendsten van seconden...
Reacties: 50.736
Reg. datum: 25-02-2004

Even een paar kleine dingetjes iets minder stellig maken hoor. ;)
quote:
CurlyMo schreef op maandag 09 april 2012 @ 13:54:
Twee andere tips:
1. Je script zal sneller zijn als je html gewoon als html laat:
Klopt, maar dat snelheidsverschil is marginaal. Er zijn talloze redenen om layout en businesslogica te scheiden, maar performance is daar niet echt een goed voorbeeld van. ;)
quote:
2. Als je dan toch HTML opneemt in je echo dan kan je beter enkele quotes gebruiken:

Dan hoef je dus ook niet de hele tijd te escapen. Ten tweede zijn enkele quotes sneller omdat binnen enkele quotes geen variabelen mogen voorkomen:
Ook dat snelheidsverschil is marginaal en om die reden kun je wat mij betreft het beste gewoon het soort quote schrijven dat de minste problemen gaat opleveren met de string die je erin zet. Vergeet bovendien niet dat je control characters zoals \n en \t niet kan gebruiken tussen enkele quotes. :)

Omines - Snel en gratis juridisch advies
Standeman: Ik wil mijn ballen ook wel doneren hoor, ik doe er toch ook niets meer mee.

Reacties: 1.800
Reg. datum: 18-02-2011

quote:
NMe schreef op maandag 09 april 2012 @ 18:30:
Even een paar kleine dingetjes iets minder stellig maken hoor. ;)

[...]

Klopt, maar dat snelheidsverschil is marginaal.
Mijn opmerking gaat er vooral om dat iemand er bewust van is dat je tussen je script door ook gewoon weer HTML kan gebruiken en dat dit veelal aan te raden is. Hoe geavanceerd je het dan ook wilt maken.
quote:
Er zijn talloze redenen om layout en businesslogica te scheiden, maar performance is daar niet echt een goed voorbeeld van. ;)
Klopt, zie de populariteit van Smarty maar (al wil ik daar geen discussie over openen). :P
quote:
[...]

Ook dat snelheidsverschil is marginaal en om die reden kun je wat mij betreft het beste gewoon het soort quote schrijven dat de minste problemen gaat opleveren met de string die je erin zet. Vergeet bovendien niet dat je control characters zoals \n en \t niet kan gebruiken tussen enkele quotes. :)
Ik heb mezelf de regel gesteld dat ik gewoon altijd enkele quotes gebruik tenzij ik control characters nodig heb. Code ziet er bij mij dan ook als volgt uit:
PHP:

1
2
<?php
$sDay = 'maandag';
echo 'Het is vandaag '.$sDay."\n";
?>

Ondanks dat het misschien marginaal is qua performance maakt het me wel bewuster van waar ik mee bezig ben dan simpelweg maar alles in dubbele quotes te zetten. Het werkt voor mij een beetje als de discussie tussen het afvangen van alle mogelijke errors of gewoon @ te gebruiken voor een functie.

http://www.flickr.com/curlymo/ | aub geen vragen via PM die ook in het forum gesteld kunnen worden

Reacties: 50.736
Reg. datum: 25-02-2004

offtopic:
"Mits" betekent precies het tegenovergesteld van wat je bedoelt. Je moest "tenzij" hebben. :P

Omines - Snel en gratis juridisch advies
Standeman: Ik wil mijn ballen ook wel doneren hoor, ik doe er toch ook niets meer mee.

Pagina: 1




© 1998 - 2013 Tweakers.net B.V. Contact Over Tweakers Jouw privacy Algemene voorwaarden Cookies

Tweakers wordt uitgegeven door De Persgroep en wordt gehost door True

Website van het jaar 2012