php script naar start door op submit te klikken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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>

Acties:
  • 0 Henk 'm!

  • Navi
  • Registratie: Maart 2007
  • Niet online
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.

[ Voor 8% gewijzigd door Navi op 09-04-2012 13:45 ]


Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 16-09 09:06

Firesphere

Yoshis before Hoshis

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'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 11:50
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.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
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...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Even een paar kleine dingetjes iets minder stellig maken hoor. ;)
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. ;)
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. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 11:50
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.
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
[...]

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
$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.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

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

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1