Avatar billede gizmo234 Nybegynder
22. februar 2006 - 21:49 Der er 11 kommentarer og
1 løsning

Form med regel om visse ord ikke må bruges?

Hej.
Jeg er ved at lave en gæstebog, og vil gerne have det sådan, at det kun er mig som kan hedde mit brugernavn, når man skriver i gæstebogen. Så jeg skal logge ind som admin, for at kunne hedde det inde i gæstebogen.

Er det muligt at gøre så man fx ikke må hedde "Lars" (bare et eksempel), i et textarea i en form?
Avatar billede milandt Nybegynder
22. februar 2006 - 22:05 #1
Du kan kontrollere dette på to måder.

1) Javascript. Ikke videre sikkert, da javascript blot kan slås fra i browseren, idet javascript afvikles på klienten, og ikke på serveren.

2) Serverside kode/scripting. Dit webhotel vil formentlig understøtte enten asp eller php - to serverside scriptsprog. Den side formen submittes til indeholder noget kode, der gemmer indholdet i din gæstebog. I den kode kan du sørge for at feltet "navn" ikke må være "Lars", og hvis det er, så vise en fejlbesked til brugere.
Avatar billede gizmo234 Nybegynder
22. februar 2006 - 22:08 #2
Ja, der er PHP på webhotellet. Vil helst kører det over PHP.

Hvo
Avatar billede gizmo234 Nybegynder
22. februar 2006 - 22:09 #3
Hov, kom til at trykke send for tidligt...

Ja, den side som sender indholdet ind i databasen ser således ud:

<?


$connection = mysql_connect("****","****","****");
mysql_select_db("****", $connection);
mysql_query("INSERT INTO `gb` (`ip` , `ur` , `navn` , `mail` , `hp` , `tekst` )
VALUES ('".$_SERVER['REMOTE_ADDR']."', '$_POST[dato]' ,  '$_POST[navn]', '$_POST[mail]', '$_POST[hp]', '$_POST[tekst]' )") OR DIE (mysql_error());

mysql_close;

?>

Hvordan vil du så gøre, så man ikke må sende "Lars" ind i feltet navn?
Avatar billede milandt Nybegynder
22. februar 2006 - 22:24 #4
Og da det er DHTML kategorien, kan du lige få en funktion i javascript der kan validere brugernavnet på klientsiden - bare vær opmærksom på, at det kræver ikke super meget snilde at omgå det.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
    <title>Guestbook</title>
    <script type="text/javascript">
        function testNavn()
        {
            if(document.getElementById('username').value.toLowerCase() == 'lars')
            {
                document.getElementById('username').value = 'Gæst';
                alert('Vælg et andet navn!');
                return false;
            }
            else
                return true;           
        }
    </script>
</head>
<body>
    <form method="post" name="guestbookForm" onsubmit="return testNavn();" action="guestbook.asp">
        Navn<br>
        <input type="text" id="username" name="username"><br><br>
        Besked<br>
        <textarea name="message"></textarea><br><br>
        <input type="submit" value="send">
    </form>
</body>
</html>
Avatar billede milandt Nybegynder
22. februar 2006 - 22:28 #5
nu er jeg ikke særlig stærl i min php syntax, men ville sætte en if statement rundt om din php kode..

pseudo kode:


<?

if($_POST[navn].lowercase() != "lars"
{
    $connection = mysql_connect("****","****","****");
    mysql_select_db("****", $connection);
    mysql_query("INSERT INTO `gb` (`ip` , `ur` , `navn` , `mail` , `hp` , `tekst` )
VALUES ('".$_SERVER['REMOTE_ADDR']."', '$_POST[dato]' ,  '$_POST[navn]', '$_POST[mail]', '$_POST[hp]', '$_POST[tekst]' )") OR DIE (mysql_error());

    mysql_close;
}
else
    print('Vælg et andet navn. <a href="java script:history.back(1)">tilbage</a>');
?>
Avatar billede gizmo234 Nybegynder
22. februar 2006 - 22:36 #6
Har lige prøvet, men der kommer fejl.

<?

if($_POST[navn].lowercase() != "lars"
{
    $connection = mysql_connect("****","****","****");
    mysql_select_db("****", $connection);
    mysql_query("INSERT INTO `gb` (`ip` , `ur` , `navn` , `mail` , `hp` , `tekst` )
VALUES ('".$_SERVER['REMOTE_ADDR']."', '$_POST[dato]' ,  '$_POST[navn]', '$_POST[mail]', '$_POST[hp]', '$_POST[tekst]' )") OR DIE (mysql_error());

    mysql_close;
}
else
    print('Vælg et andet navn. <a href="java script:history.back(1)">tilbage</a>');
?>

Først var der fejl på linie 4, som er {, lige efter lars. Men det var fordi "if($_POST[navn].lowercase() != "lars"" ikke var blevet lukket rigtigt. Så smed ); efter lars", og så brokkede den sig ikke over den linie mere. Så nu brokker den sig over linie 12, som er } efter mysql_close;, og lige inden else. Hvad er fejlen der?
Avatar billede milandt Nybegynder
22. februar 2006 - 22:45 #7
det er nok fordi det er pseudo kode. dvs det er skrevet sådan at du kan forstå hvad der sker, men ikke nødvendigvis med den rigtige syntax. hvis du ikke kender til php må du slå op hvordan man laver en if-sætning, eller vente på nogen andre svarer.

det er kun meningen at ovenstående skal give dig forståelsen for hvordan det kan lade sig gøre. som sagt - jeg er ikke særlig stærk i php.
Avatar billede milandt Nybegynder
22. februar 2006 - 22:45 #8
den første fejl er selvfølgelig fordi der mangler en ) til sidst

if($_POST[navn].lowercase() != "lars")
Avatar billede milandt Nybegynder
22. februar 2006 - 22:46 #9
sry, havde ikke læst at du selv havde opdagedet den manglende )

jeg ved ikke hvad fejlen i linie 12 er.
Avatar billede gizmo234 Nybegynder
22. februar 2006 - 22:56 #10
Okay, jeg finder ud af resten :) Du får mange tusinde tak for dit skub i den rigtige retning :) Kommer du ikke lige med et svar, så du kan få point for de gode svar ? :)
Avatar billede milandt Nybegynder
22. februar 2006 - 23:23 #11
happy to help :D
Avatar billede stich Nybegynder
23. februar 2006 - 07:49 #12
...i fald du ikke har fundet en løsning på problemet:
http://php.net/strcasecmp eller http://php.net/strtolower
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester