hulp nodig met login scherm

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fabian S

Fabian S

19/09/2012 23:19:22
Quote Anchor link
Hallo allemaal,

Dit is mijn eerste poging een login scherm te maken
voor mijn irc maar het lukt me nog niet zo best.
Wat doe ik in deze code fout. Groeten Fabian

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if (strlen($_POST['Nick'])>1) == 0 && ($_POST['Nick'])) {
    echo "<param name=\"Nick\" value=\"".$_POST['Nick']."\n">";
    echo "
<param name=\"command1\" value=\"/nickserv identify ".$_POST['Pass']."\n">";
} else {
    if(strlen($_POST['Gast_'])>1)
    echo "
<param name=\"Gast_\" value=\"".$_POST['Nick']."\n">";
}

?>
 
PHP hulp

PHP hulp

18/04/2024 16:31:55
 
Write Down

Write Down

20/09/2012 00:05:14
Quote Anchor link
Er zitten meerdere zaken flink fout. Je sluit de haakjes waar het niet hoeft, je sluit quotes niet etc.

Bij regel 1 gaat het al mis, na >1 heb je aan haakje. Dit haakje zegt aha, hier is de if gedaan. Dat wil je dus niet. Verder is $_POST['Nick'] in het tweede gedeelte nutteloos. Dit wil zeggen dat $_POST['Nick'] een boolean zou moeten zijn, en in dit geval true zou moeten geven.

Veel beter code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(isset($_POST['Nick']) && strlen(trim($_POST['Nick'])) >1 )
?>


Met trim ga je de spaties uit te string filteren. Je wilt bv. niet dat een nickname uitsluitend uit spaties bestaat. (eventueel moet je nog andere tekens weren)

Regel 2 sluit je ook niet correct af. Daar bovenop vergeet je te concateneren (aan mekaar lijmen [met .]).

Wat je wellicht wou typen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    echo "<param name=\"Nick\" value=\"".$_POST['Nick']."\n"."\>";
?>


Maar ook dit is niet erg netjes. Maak het jezelf in eerste instantie makkelijker, gebruik single quotes. (overigens raad ik sowieso aan altijd single quotes te gebruiken) Verder wil je wellicht die "\n" (new line) niet voor het afsluiten van je param box. Je wilt nl. in je HTML pas een volgende lijn starten bij de volgende param(althans, dat is logischer). Dus die "\n" moet achteraan de regel. Let wel op, bij \n moet je altijd dubbel quotes gebruiken.

Op je 3de regel maak je dezelfde fout.

De 4de regel is helemaal goed :-)

De 5de regel in principe ook, maar ook hier weer kanttekening bij de validatie. De syntax is dus juist, maar de code zelf is vrij slecht. Je moet gaan controleren of het veld wel is ingevuld. Kijk zeker eens naar isset.

Regel 7 is weer gelijkaardig aan regel 2 en regel 3.

Regel 9 is ook prima :-)
 
Fabian S

Fabian S

20/09/2012 16:04:18
Quote Anchor link
Bedankt voor de positieve reactie,

Ik ben gelijk aan de slag gegaan en heb
meteen de aanpassingen toegepast, ik hoop
dat het nu in vele opzichten verbeterd is:

Groeten Fabian

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(isset($_POST['Nick']) && strlen(trim($_POST['Nick'])) >1 );
    echo "<param name=\"Nick\" value=\"".$_POST['Nick']."\n"."\>";
    echo "<param name=\"command1\" value=\"/nickserv identify ".$_POST['Pass']."\n"."\>";
if(isset($_POST['Gast_']) && strlen(trim($_POST['Nick'])) >1 );
    echo "<param name=\"Gast_\" value=\"".$_POST['Nick']."\n"."\>";
?>
 
- SanThe -

- SanThe -

20/09/2012 16:30:22
Quote Anchor link
Gebruik enkele quotes voor php zodat je de dubbele html quotes niet hoeft te escapen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo "<param name=\"Nick\" value=\"".$_POST['Nick']."\n"."\>";
// wordt dan
echo '<param name="Nick" value="'.$_POST['Nick'].'"\>';
?>
 
Kris Peeters

Kris Peeters

20/09/2012 16:51:42
Quote Anchor link
Trouwens ... Wat staat die laatste \ daar nog te doen? Die mag ook weg.

Die if is ook verkeerd.

Die puntkomma achter de lijn met de if zorgt er voor dat de if niets doet.
Probeer e-zelf maar eens uit.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
if ('a' == 'b');
  echo 'a is het zelfde dan b';
?>


Sowieso moet die puntkomma weg.

Werk met accolades. Meer zoals je het deed bij je eerste stuk code. Maar dan wel met de verbeteringen van de posts hier boven (in je eerste script staan syntax erros, omdat je niet goed elke ' en " deftig afsluit). Vooral het advies om enkele quotes te gebruiken ... zie de post hier boven (De post van "Write Down" zegt het ook allemaal).
Gewijzigd op 20/09/2012 16:52:27 door Kris Peeters
 
Fabian S

Fabian S

20/09/2012 16:52:31
Quote Anchor link
Bedankt voor de input,

Ik heb gelijk het in de php code verwerkt,
hopelijk is het nu wel goed:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if(isset($_POST['Nick']) && strlen(trim($_POST['Nick'])) >1 );
    echo "<param name=\"Nick\" value=\"".$_POST['Nick']."\n"."\>";
    //
    echo "<param name=\"command1\" value=\"/nickserv identify ".$_POST['Pass']."\n"."\>";
if(isset($_POST['Gast_']) && strlen(trim($_POST['Nick'])) >1 );
    echo "<param name=\"Gast_\" value=\"Gast_".$_POST['Nick']."\n"."\>";
?>
 
Kris Peeters

Kris Peeters

20/09/2012 17:56:36
Quote Anchor link
Nee, toch niet.
Lees echt eens grondig wat men je probeert te vertellen.
 
Fabian S

Fabian S

20/09/2012 19:34:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if(isset($_POST['Nick']) && strlen(trim($_POST['Nick'])) >1 );
    echo '<param name="Nick" value="'.$_POST['Nick'].'"\>';
    //
    echo '<param name="command1" value="/nickserv identify"'.$_POST['Pass'].'"\>';
if(isset($_POST['Gast_']) && strlen(trim($_POST['Nick'])) >1 );
    echo '<param name="Gast_" value="'.$_POST['Nick'].'"\>';
?>


Ik hoop dat ik nu de fouten er definitief uit heb,
bedankt voor alle positieve reacties.
 
Write Down

Write Down

20/09/2012 23:44:37
Quote Anchor link
Helaas nog steeds niet correct. Je hebt nog steeds puntkomma's staan waar het niet hoort. De eenvoudigste syntaxis (er zijn nog kortere notaties, maar in dit geval raad ik die eerder af) van een if-elseif-else structuur ziet er als volgt uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if(statement) {
 //hier overige code
}elseif(statement) {
 //hier andere code
}else {
 //hier nog wat code
}
?>


Uiteraard is statement iets zinnig, en is statement in de if niet gelijk aan die van de elseif. En je bent natuurlijk niet verplicht altijd een elseif of zelfs een else te schrijven. (het omgekeerde geldt ook) Verder, toch voor de zekerheid even vermelden, inspringen en enters mag je naar eigen believen toevoegen. Kwestie van wat je overzichtelijk vindt.

Een voorbeeldje hoe het wél netjes en correct er kan uitzien:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(isset($_POST['Nick']) && strlen(trim($_POST['Nick'])) >= 1) {
    echo '<param name="Nick" value="'. $_POST['Nick']. '" />' . "\n";    
}

?>


Je ziet, ik voeg ook her en der wat spaties toe, dit is om de leesbaarheid te verhogen. Niet noodzakelijk, maar het helpt, zeker als beginner.

Tot slot ga ik er eigenlijk van uit dat je ook geen degelijke editor gebruikt. Een beetje editor zou je gelijk tonen dat de code die je oorspronkelijk post zondigt tegen de syntaxis van PHP. Een nog betere editor geeft ook nog andere 'foutjes' of mogelijke logische fouten aan. (bv het hergebruiken van variabelen kan ongewenst zijn, dode code, ...)

Mijn voorkeur qua editor gaat uit naar Netbeans, een gratis IDE.
Gewijzigd op 20/09/2012 23:47:05 door Write Down
 
Fabian S

Fabian S

22/09/2012 15:41:21
Quote Anchor link
Bedankt voor de tip over Netbeans,

Ik ben meteen aan de slag gegaan en
heb daardoor de volgende code kunnen
maken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(isset($_POST['Nick']) && strlen(trim($_POST['Nick'])) >= 1) {
    echo '<param name="Nick" value="'. $_POST['Nick']. '" />' . "\n";
    //
    echo '<param name="command1" value="/nickserv identify"'.$_POST['Pass']. '" />' ."\n";
}

if(isset($_POST['Gast_']) && strlen(trim($_POST['Nick'])) >= 1) {
    echo '<param name="Gast_" value="'.$_POST['Nick']. '" />' ."\n";
}

        ?>
 
Fabian S

Fabian S

27/09/2012 21:54:28
Quote Anchor link
Fabian S op 22/09/2012 15:41:21:
Bedankt voor de tip over Netbeans,

Ik ben meteen aan de slag gegaan en
heb daardoor de volgende code kunnen
maken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(isset($_POST['Nick']) && strlen(trim($_POST['Nick'])) >= 1) {
    echo '<param name="Nick" value="'. $_POST['Nick']. '" />' . "\n";
    //
    echo '<param name="command1" value="/nickserv identify"'.$_POST['Pass']. '" />' ."\n";
}

if(isset($_POST['Gast_']) && strlen(trim($_POST['Nick'])) >= 1) {
    echo '<param name="Gast_" value="'.$_POST['Nick']. '" />' ."\n";
}

        ?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
if(isset($_POST['Nick']) && strlen(trim($_POST['Nick'])) >= 1) {
    echo '<param name="Nick" value="'. $_POST['Nick'].'" />'."\n";
    //
    echo '<param name="command1" value="/nickserv identify"'.$_POST['Pass'].'" />'."\n";
}
else {
if(isset($_POST['Gast_']) && strlen(trim($_POST['Nick'])) >= 1) {
    echo '<param name="Gast_" value="'.$_POST['Nick'].'" />'."\n";
    }
}

?>


dit is de nieuwste
 
Cake Masher

Cake Masher

28/09/2012 00:48:16
Quote Anchor link
In je if kijk je of er een $_POST value is geset, en of deze meer dan 1 teken bevat. Kan je dan niet veel beter de empty functie gebruiken??

(verbeter me als ik het fout heb.)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

    if (!empty ($_POST['Nick']))
    {

        echo '<param name="Nick" value="' . $_POST['Nick'] . '" />' . "\n";
        echo '<param name="command1" value="/nickserv identify"' . $_POST['Pass'] . '" />' . "\n";
    }

    else
    {
        if (!empty ($_POST['Gast_']))
        {

            echo '<param name="Gast_" value="' . $_POST['Nick'] . '" />' . "\n";
        }
    }

    
?>
Gewijzigd op 28/09/2012 00:48:41 door Cake Masher
 
- SanThe -

- SanThe -

28/09/2012 02:48:47
Quote Anchor link
Cake Masher op 28/09/2012 00:48:16:
(verbeter me als ik het fout heb.)


Een !empty(..) accepteert 1 character en dat is niet groter dan 1.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.