Avatar billede cyperangel Nybegynder
26. maj 2005 - 00:21 Der er 19 kommentarer og
1 løsning

check af kodeord i php og sql

Hejsa. Jeg står og er i gang med et lille projekt, som sædvanligt, og vanen tro har jeg brug for lidt hjælp.

Jeg har en tabel der hedder kode, med et felt der hedder ord. Dette indeholder to forskellige ord.

JEg har brug for noget PHP kode, som kan checke om det brugeren har tastet ind matcher et af de to ord, og reagere forskelligt alt efter hvilket af de to der er det indtastede. Ligeledes skal det også komme med en stor fed fejl hvis kodeordet ikke matcher et af de to.

Kan det evt gøres som en funktion der kaldes fra en form, og sættes som en cookie eller noget? Det vil være lidt træls at have password feltet på siden hele tiden, og jeg vil egentligt helst nøjes med en enkelt side, så folk ikke bare kan smutte forbi password fnktionen med et bogmærke...

Skriv endelig hvis i har brug for mere information.
Avatar billede nielle Nybegynder
26. maj 2005 - 06:19 #1
Hvis der er to ord i et felt, så må de vel være adskildt fra hinanden på en eller anden måde. Kan du ikke lige vise hvordan? Er der komma imellem ordene eller sådan noget?
Avatar billede cyperangel Nybegynder
26. maj 2005 - 14:06 #2
hrm, den fik jeg vist ikke lige forklaret godt nok der...

I min database har jeg en tabel, som hedder kode. I den er der en en overskrift der hedder ord. Og i den der der to celler, som indeholder hhv master og user som indhold.
Avatar billede nielle Nybegynder
26. maj 2005 - 16:54 #3
Hvorfor synes du at du har brug for at komme forbi en database? Hvis du på forhånd kender det tor mulige ord så kunne løsningen se sådan her ud:

===== side1.php =====

<form action="side2.php" method="post">
<input type="text" name="ord">
<input type="submit">
</form>

===== side2.php =====

<?php

$ord = $_POST["ord"];

if ($ord == "master")
{
    // Gør det der skal gøres for $ord = "master"
}
elseif ($ord == "user")
{
    // Gør det der skal gøres for $ord = "user"
}
else
{
    echo "en stor fed fejl";
}
?>

Hvis det ikke var det, så må du gerne forklare lidt mere om hvad det er du skal bruge det til.
Avatar billede cyperangel Nybegynder
26. maj 2005 - 19:36 #4
tjah, en af årsagerne er at det ene password skal skiftes på ugentlig basis, og det er nemmere at udfylde en form end at ændre i html /php koden hver uge.
Avatar billede nielle Nybegynder
26. maj 2005 - 19:52 #5
Ok, men så må du jo foruden de to passwords også have en ekstra oplysning for hver som indikere hvilket som tilhøre master og hvilket som er for user. Har du det? Og hvad hedder det så?
Avatar billede cyperangel Nybegynder
26. maj 2005 - 21:03 #6
øh....
Ikke andet end placeringen i tabellen... det første er til master adgang, det andet er til user adgang.. hvis man henter den ind i et array, vil $ord[0] være = master
og $ord[1] være = user. eller hvad?
Avatar billede nielle Nybegynder
26. maj 2005 - 21:29 #7
Du har ingen garanti for at de altid vil komme ud i samme rækkefølge. Det er op til databasesystemet selv at bestemme rækkefølgen efter hvad der er mest effektivt på det givne tidspunkt. :^|

Jeg ville tilføje en ny søjle som f.eks. kunne hedde "bruger", og så ville jeg ændre din søjle "ord" til at hedde noget i stil med "password".
Avatar billede nielle Nybegynder
26. maj 2005 - 21:51 #8
Øh? Ligger de i samme række? Eller ligger de under hinanden i samme søjle?
Avatar billede cyperangel Nybegynder
26. maj 2005 - 21:52 #9
hm. ok.Det prøver jeg lige at rodde med i ti minutter...
Avatar billede cyperangel Nybegynder
26. maj 2005 - 22:13 #10
Under hinanden i en søjle.
Avatar billede nielle Nybegynder
26. maj 2005 - 22:22 #11
Så bør du ændre tabellen "kode" til at den indeholder to søjler, med navnene "Bruger" og "Password", og med værdierne:

    Bruger Password
Række 1: master master
Række 2: user user

Lige nu skal der altså bare stå det samme i begge felter i hver række. Senere nå du vil ændre kodeord for master-brugeren så er det kun værdien i feltet Password som skal ændres:

    Bruger Password
Række 1: master nyt-master-kodeord
Række 2: user user

Det er vigtigt at vi får denne tabel på plads før vi kan gå videre med resten.
Avatar billede cyperangel Nybegynder
26. maj 2005 - 22:26 #12
well, bortset fra at den ser sådan her ud, så er den i orden...

        ord          user
række 1  lalala      master
række 2  dododo      user
Avatar billede nielle Nybegynder
26. maj 2005 - 22:30 #13
Helt fint. Jeg når desværre ikke at arbejde ret meget mere på problemet her i aften.

Har du prøvet at forbinde fra PHP til en database før? Hvis du har, kan du så ikke lige skrive hvordan? - sådan at jeg rammer rigtigt i første omgang. :^)
Avatar billede cyperangel Nybegynder
26. maj 2005 - 22:41 #14
ok, jeg sidder og roder lidt med det lige nu. og her er hvad jeg er kommet frem til so far. Her skal lige siges, at jeg endnu ikke har indarbejdet den anden søjle vi lavede, men det planlægger jeg. Jeg kan dog ikke få mine if sætninger til at virke. Uanset hvad jeg skriver i formen, så skriver den bare you do not have acces to this page. Så jeg har fumlet med overførslen af dataene fra formen.
*suk* Det er alt for lang tid siden jeg sidst har rodet med php og sql, og jeg har endda fået smidt mine php manualer ud i et flytterod. ÆV!


<html>
<body bgcolor="black" text="white">
<?
global $HTTP_POST_VARS

$kodeord=$HTTP_POST_VARS['adgangskode'];


function passcheck() {
    $db = mysql_connect("databaseurl","username","password");
    mysql_select_db("databasename",$db);
    $foresp = mysql_query("SELECT * FROM kode");
    while ($data = mysql_fetch_row($foresp)){
        $ordet[] = $data[0];
        $user[] = $data[1];
    }
    echo $kodeord;
    if ($kodeord == $ordet[0]) {
        echo "welcome master";
   
    }
    if ($kodeord == $ordet[1]) {
        echo "welcome user";
   
    }
    else {
        echo "you do not have acces to this page.";
   
    }
   
}


if ($kodeord) {
passcheck();
}
else {
?>
<form method=post action=<?echo $PHP_SELF; ?> >
Password:<br>
<input type=password name=adgangskode><br>
<input type=submit value=Login>

<form>
<?
}
?>
</body>
</html>
Avatar billede cyperangel Nybegynder
26. maj 2005 - 23:09 #15
jeg tror sku jeg har fået knækket nødden selv :D

<html>
<body bgcolor="black" text="white">
<?
global $HTTP_POST_VARS;
global $_POST;

$kodeord = $_POST["adgangskode"];

function passcheck() {
    $kodeord = $_POST["adgangskode"];
    $db = mysql_connect("db.cyperdesign.dk","gb0432","lightfoce");
    mysql_select_db("gb0432",$db);
    $foresp = mysql_query("SELECT * FROM kode WHERE ord = '$kodeord'");
    while ($data = mysql_fetch_row($foresp)){
        $ordet[] = $data[0];
        $user[] = $data[1];
    }
   
    if ($user[0] == "admin") {
        echo "welcome master";
    }
    if ($user[0] == "user") {
        echo "welcome user";
    }
    if (($user[0] != "user") && ($user[0] != "admin")) {
        echo "you do not have acces to this page.";
    }
   
}

Den giver de rigtige resultater alt efter hvilket kodeord jeg smider i den :D

Tak for hjælpen, der skal nok komme mange flere dumme spørgsmål fra mig i de næste dage. Smid lige et svar, så jeg ka dele nogen points med dig :D
Avatar billede cyperangel Nybegynder
26. maj 2005 - 23:09 #16
lige et andet spørgsmål, som lovet. Er det muligt at neste funktioner inden i hinanden?
Avatar billede cyperangel Nybegynder
27. maj 2005 - 00:00 #17
accepteret
Avatar billede nielle Nybegynder
27. maj 2005 - 17:16 #18
Du kan kalde andre funktioner fra en funktion - og ellers er jeg ikke helt klar over hvad du mener med at "neste"?

I øvrigt kan din kode forsimples til:

<?php
$kodeord = $_POST["adgangskode"];
passcheck($kodeord);

function passcheck($kodeord)
{
    $db = mysql_connect("db.cyperdesign.dk", "gb0432", "lightfoce");
    mysql_select_db("gb0432", $db);

    $foresp = mysql_query("SELECT user FROM kode WHERE ord = '$kodeord'");

    while ($data = mysql_fetch_row($foresp))
    {
        $user = $data[0];
    }
   
    if ($user == "admin")
    {
        echo "Welcome master";
    }
    elseif ($user == "user")
    {
        echo "Welcome user";
    }
    else
    {
        echo "You do not have access to this page.";
    }   
}
?>
Avatar billede nielle Nybegynder
31. maj 2005 - 19:41 #19
Du skal også acceptere svaret hvis du vil have dine points tilbage.
Avatar billede nielle Nybegynder
26. juni 2005 - 20:04 #20
?
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