Avatar billede tinebn Nybegynder
14. juni 2008 - 19:10 Der er 12 kommentarer og
1 løsning

min 4 karakter i et password

Hej
Hvordan får jeg sat et min input på 4 karakter i min database til
mine passwords den godkender alt pånær dubletter.. ( fundet lidt koder hist og her og sat det sammen i)

kan jeg skrive antal der, hvor der står  feltnavn og så størrelse i mysql eller skal det være i koderne ?

Password  varchar(10)  NOT NULL  ? not null betyder det så at feltet ikke må være tomt?
hilsen
newbee mysql
Avatar billede supersquirrel Nybegynder
14. juni 2008 - 19:15 #1
Når du sætter den til varchar(10) kan der MAKS være 10 tegn i..

Forstår ikke helt hvad du mener ellers
Avatar billede tinebn Nybegynder
14. juni 2008 - 19:24 #2
ok... ja... men jeg er ude i, at der skal være mere end 4  tegn i  password ... den godtager brugernavn og password som tomme.... så kan alle jo logge sig ind.. med tom felter
Avatar billede riversen Nybegynder
14. juni 2008 - 19:30 #3
du kan ikke få mysql til at validere på den vis... den logik må du lægge i den applikation, der benytter databasen.
Avatar billede supersquirrel Nybegynder
14. juni 2008 - 19:49 #4
Login:

Lav en form med henholdsvis 3 input:
1x brugernavn
1x kodeord
1x submit

Når du skal tjekke om alle felter er udfyldt kan du fx. gøre:

if($_POST[brugernavn] != "" && $_POST[kodeord]){
Her laver du en forespørgsel til din database, også kan du gøre noget i den her stil:
if($_POST[brugernavn] = $row[brugernavn] && $_POST[kodeord] == $row[kodeord]){
Hvis alt dette stemmer overens, så kan brugeren logge ind :)
}else{
echo "forkert brugernavn eller kodeord";
}}else{
echo "alle felter skal udfyldes";
Avatar billede supersquirrel Nybegynder
14. juni 2008 - 19:59 #5
<?php
// http://www.eksperten.dk/spm/834924
// af supersquirrel
include("db.php");

if($_GET['action'] == "login"){
    if($_POST['brugernavn'] != "" && $_POST['kodeord']){
        $sql = mysql_query("SELECT * FROM bruger WHERE brugernavn='$_POST[brugernavn]' AND kodeord='$_POST[kodeord]'") or die("Fejl: " . mysql_error());
        if(mysql_num_rows($sql) == 1){
            echo "Tillykke! Du er logget ind! :-)";
        }else{
            echo "Brugernavn eller kodeord er forkert, eller findes ikke!";
        }
    }else{
        echo "Alle felterne skal udfyldes! :)";
    }
}
?>
<table border="0" cellspacing="0" cellpadding="0">
<form method="POST" action="dinfil.php?action=login">
    <tr>
        <td>
            B: <input type="text" name="brugernavn"><br/>
            K: <input type="password" name="kodeord"><br>
            <input type="submit" value="LOGIN">
        </td>
    </tr>
</form>
</table>
Avatar billede tinebn Nybegynder
14. juni 2008 - 20:11 #6
ok... jeg skal lige have lidt tid til at kikke på det... for nu tak for skubbet
Avatar billede zynzz Praktikant
15. juni 2008 - 08:44 #7
varchar(10) betyder størrelsen på feltet i databasen, hvis du ønsker at brugeren min skal have en kode på 4 cifre kunne du fx. gøre dette:

if(strlen($_POST['kodeord']) >= 4){
// koden som supersquirrel skriver fx
}else{
echo "Dit kodeord skal min. være på 4 cifre";
}
Avatar billede arne_v Ekspert
15. juni 2008 - 19:45 #8
I mange andre databaser kunne du putte en constraint på feltet således at databasen
sikrede at værdien altid var mindst 4 tegn. Det kan man imidlertid ikke i MySQL. Så
derfor er man nødt til at checke det i applikationen.

NB: Det er ikke altid smart at gemme et password i en database. Overvej at gemme det
    i hashed form.
Avatar billede supersquirrel Nybegynder
15. juni 2008 - 20:10 #9
md5($string);

Den kan du bruge til at kryptere :)))
Avatar billede riversen Nybegynder
15. juni 2008 - 20:13 #10
md5 er hashing og ikke kryptering.

hvis du gemmer det i hashed form så huske at tilsætte et "salt", som ekstra sikkerhed.
Avatar billede tinebn Nybegynder
16. september 2008 - 16:59 #11
Hej
Jeg kan ikke få koden til, både at acceptere min 4 karakter og så stadig  ....hente og godkende kodeord + brugernavn fra database

if (mysql_num_rows($result)!=0) er det i dette stykke kode jeg mangler de rigtige parameter ?....... sætter jeg = 0 virker den bedst, men så er det lige meget hvilket kodeord der skrives bare der skrives noget :-))


//forbindelse til database

mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
mysql_select_db($dbname) or die(mysql_error());

session_start();
$username = $_POST['username'];
$password = ($_POST['password']);

$query = "select * from users where username='$username' and password='$password'";

$result = mysql_query($query);

if (mysql_num_rows($result)!=0)
{
$error = "Forkert login";
    include "forkertlogin.html";

} else {
    $_SESSION['username'] = "$username";
    include "loginside.php";
}

?>
Avatar billede tinebn Nybegynder
21. september 2008 - 17:39 #12
Hej supersquirrel
Hiv og sving ..... så lykkes det... forstår det bare ikke helt  ;-)) == 1
Tak for de gode oplysninger ( arne v)
Ønsker at lukke spørgsmål
hilsen Tine
Avatar billede tinebn Nybegynder
31. marts 2011 - 17:20 #13
lukker
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
Computerworld tilbyder specialiserede kurser i database-management

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