hulp nodig met login scherm
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)
1
2
3
4
5
6
7
8
9
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">";
}
?>
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">";
}
?>
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:
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:
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 :-)
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)
1
2
3
4
5
6
7
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"."\>";
?>
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"."\>";
?>
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.
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
Ik heb gelijk het in de php code verwerkt,
hopelijk is het nu wel goed:
Code (php)
1
2
3
4
5
6
7
8
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"."\>";
?>
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"."\>";
?>
Lees echt eens grondig wat men je probeert te vertellen.
Code (php)
1
2
3
4
5
6
7
8
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'].'"\>';
?>
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.
Code (php)
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)
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
Ik ben meteen aan de slag gegaan en
heb daardoor de volgende code kunnen
maken.
Code (php)
1
2
3
4
5
6
7
8
9
10
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";
}
?>
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 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.
Ik ben meteen aan de slag gegaan en
heb daardoor de volgende code kunnen
maken.
Code (php)
1
2
3
4
5
6
7
8
9
10
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";
}
?>
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)
1
2
3
4
5
6
7
8
9
10
11
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";
}
}
?>
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
(verbeter me als ik het fout heb.)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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";
}
}
?>
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
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.