[HTML/PHP] Vraag over form method icm include

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goedenavond,
Ik ben bezig met een klein CMS-je, nu ben ik bezig met het gebruikersgedeelte. Dit alles heb ik gedaan met classes. Nu heb ik een soort van functies gemaakt in een apart bestand waar de onderdelen apart in staan. Zo heb ik bijvoorbeeld een menu bestand wat het menu-tje genereert.
Nu heb ik ook een gedeelte voor een login script. Deze tovert mooi het login schermpje tevoorschijn, echter het uitvoeren van het form lukt niet.

De code die ik gebruik.

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
function showLogin() {
?>
    echo "<form method=post' action=$PHP_SELF>"; ?>
        <table width=100% height=50% border='1' cellspacing='0' cellpadding='0'>
            <tr>
                <td height=40px>Username</td>
                <td height=40px><input type="text" name="userName"></td>
            </tr>
            <tr>
                <td height=40px>Password</td>
                <td height=40px><input type="password" name="password"></td>
            </tr>
            <tr>
                <td height=40px><input type="submit" value="Login"></td>
            </tr>
            <input type="hidden" name="submit" value="1">
        </table>
    </form>
<?
if ($submit) {
$user = new _user($userName,$password);
    if ($user->checkLogin()) {
        echo "You are logged in ";
        echo $user->getUserName();
        echo "<br>";
    }
    else {
        echo "Gebruikersgegevens kloppen niet.";
    }

}
}
?>


Die functie (showlogin() ) wordt dus geinclude in het hoofdbestand binnen een tabel. Het form verschijnt ook maar het inloggen wil dus niet.

Een test bestand die dus niets anders doet dan een inlogschermpje en direct post werkt perfect.

Nu heb ik een beetje lopen zoeken en zag ik hier op GoT dat het includen de code gewoon C&P in het originele bestand.
Nu lijkt hier mijn probleem te zitten maar ik heb geen idee hoe dit op te lossen.

Dat is dus gelijk mijn vraag: Hoe zorg ik ervoor dat het formpje goed gesubmit word.

Alvast bedankt voor het lezen!!!

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
In de FAQ het onderdeel "Mijn POST en GET forms werken niet (meer)" al doorgenomen?

Je moet tegenwoordig, in dit geval, $_POST['varnaam'] gebruiken in plaats van $varnaam.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sybr_E-N schreef op 13 januari 2004 @ 19:37:
In de FAQ het onderdeel "Mijn POST en GET forms werken niet (meer)" al doorgenomen?

Je moet tegenwoordig, in dit geval, $_POST['varnaam'] gebruiken in plaats van $varnaam.
Heb het eens bekeken, ik had daar eerlijk gezegd nog niet naar gekeken. :o

Helaas lukt het me niet om daarmee het probleem op te lossen.

Het lijkt er op na wat nieuwe tests dat ie de if ($submit) niet helemaal werkt. Heb daar inmiddels ook voor geprobeerd if ($_POST['submit'] .

Helaas zonder resultaat.

Is het gewoon niet mogelijk of is er een betere manier om dit probleem op te lossen.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

name="submit" en if ($submit) is het ranzigste van het ranzigste dat je kan gebruiken.
1) met name="submit" overschrijf je de javascript submit() method
2) als je in IE met enter een form submit wordt de value van je submit button niet meegestuurd (dat geld ook voor een JS submit, maar dat kan al niet meer door 1) )
3) gebruik superglobals
4) gebruik isset() om te kijken of een bepaalde var bestaat in je request
5) om te kijken of er een form gepost is kan je ook dit doen:

PHP:
1
if ($_SERVER['REQUEST_METHOD'] == 'POST') { }


PHP-ers: leer dat toch af, dat $submit!!!!

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het probleem is opgelost maar niet op de manier die ik fijn vind.

Het post-en van de variabele (middels hidden input type of via superglobal) ging en gaat gewoon goed. Hetgeen niet lukte is dat het formpje niet gepost werd omdat die in de include zit.

Nu ik het stukje naar de startpagina gecut en paste heb deed ie het gelijk. Alleen vind ik deze oplossing erg ranzig. Dus dat moet ik nog maar eens zien op te lossen. Evenals dat alle info in de adresbalk komt te staan.
Echter is dat latere zorg.

Allen bedankt en ik hou me aanbevolen voor op- en aanmerkingen!!


offtopic:
Ik zag dezelfde reply van jou in andere topics Crisp.

Denk dat het komt door al die info die te vinden is dat dit enorm vaak vermeld staat.

Mijn excuses.

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
echo "<form method=post' action=$PHP_SELF>";
Dat klopt niet, moet zijn
PHP:
1
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">

B) Door de fout gaat ie GETTEN, en dan krijg je geen post data natuurlijk. (Er staat een ' te veel.) Verder: Lezen: XHTML 1.0 specs.

code:
1
<td height=40px>
is slecht, moet zijn
code:
1
2
3
<td height="40"> 
of
<td style="height: 40px;">

[ Voor 124% gewijzigd door Skaah op 14-01-2004 15:45 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik weet dat mijn html skills enorm bagger zijn. Het werkte overigens wel gewoon (in IE6). Maar het is me nog niet gelukt op de manier die ik wil helaas.

Ik ga eerst even ergens anders mee (me klassen) bezig want ik wordt gek van die formpjes. Klassen bouwen gaat me stukken beter af:P

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Het hele probleem zit 'm natuurlijk in het feit dat je binnen in je functie uit PHP mode springt; ik denk dat als je het hele formulier echo'ed je geen probleem meer hebt ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
crisp schreef op 14 januari 2004 @ 17:19:
Het hele probleem zit 'm natuurlijk in het feit dat je binnen in je functie uit PHP mode springt; ik denk dat als je het hele formulier echo'ed je geen probleem meer hebt ;)
Ik heb dit advies zojuist opgevolgd, helaas hielp het niet.

Ik heb nog steeds het idee dat het laatste stukje, dus het controleren op het formpje gesubmir is niet aangestuurd word, want als ik daar gewoon wat echo komt er niets op het scherm.

Edit:
Nu stuurt ie het wel aan!!! Alleen het resultaat klopt niet maar ik kan in ieder geval kijken waar de fout nu zit.

[ Voor 12% gewijzigd door Verwijderd op 14-01-2004 22:27 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het probleem is inmiddels opgelost op een nette manier. Even een post maken zodat dit topic nog nut heeft voor de search!!

Het kwam doordat de if constructie binnen de functie zat. Door deze daarbuiten te verplaatsen werkt het gelijk perfect.

Allen bedankt voor het meedenken!
Pagina: 1