Avatar billede mojdk Nybegynder
17. februar 2012 - 22:26 Der er 16 kommentarer

Vil ikke sætte password ind i database

Hej eksperter

Jeg er ved at lave et bestillings script til en kunde. Selve bestillingen osv er på plads og spiller. Men jeg har nogle problemer med at lukke det for uvedkommene. Jeg har givet mig i kast med et simpelt login script, hvor der skal oprettes bruger og logges ind før der kan laves noget.

Men jeg er stødt ind i et problem. Når jeg opretter en bruger sætter den ikke passwordet ind i databasen. Jeg havde en md5 kryptering på til at starte med. Og alt så fint ud til at starte med. Men fandt ud af at den kryptering den satte ind er svarende til ingenting. Så den sætter altså ikke det indtastet password ind i databasen.

Jeg er en smule grøn i dette felt, så håber på at i kan hjælpe mig :)

Jeg kunne forstille mig det er denne kode der er noget galt med, som henter data fra min form.

http://pastebin.com/zUX3HqwW

Lad mig vide hvis i skal bruge andet kode, eller noget.

PFT, Mads
Avatar billede jl4511 Nybegynder
17. februar 2012 - 22:40 #1
Må vi lige se koden til formularen?
Hvis feltet i formularen hedder password, burde det være rigtig nok.
Hvad er felt-typen i databasen?
Avatar billede Broxigar Praktikant
17. februar 2012 - 22:45 #2
Hej Mads,


Kan jeg se datastrukturen på din database? (altså, dine columns og deres typer)

Derudover så er din kode sårbar overfor SQL Injection.

Du bør som minimum køre alle dine strings gennem http://php.net/manual/en/function.mysql-real-escape-string.php før du laver en query.

Derudover, så prøv at sætte dette ind efter dit query:

// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}
Avatar billede mojdk Nybegynder
17. februar 2012 - 22:54 #3
@jl4511
Mit felt i min formular hedder "password". Så det burde ikke være det.
Den ser sådan ud: http://pastebin.com/MK5h0zq6

Bruger varchar, ikke så meget fancy pancy der.

@Broxigar
Jeg vil lige have styr på alt det basale inden jeg lægger for meget sikkerhed ind på det. Når jeg ikke har mere erfaring end jeg har, tager jeg et skridt ad gangen :)
Avatar billede jl4511 Nybegynder
17. februar 2012 - 23:12 #4
varchar med længden?
Jeg skal lige forstå dig rigtigt...
Registrerer den brugeren med brugernavn og kontaktperson nu, men bare med blank/ingenting i password?
Avatar billede mojdk Nybegynder
17. februar 2012 - 23:28 #5
med længden 255.

Ja undskyld, brugernavn og kontaktperson bliver registreret helt fint. Men bare blankt/ingenting i password.
Avatar billede Broxigar Praktikant
17. februar 2012 - 23:32 #6
Prøv evt, på linje 8 i din php-fil, at printe dine variable, så du kan se om det er i din $_POST at kodeordet mangler.
Avatar billede jl4511 Nybegynder
17. februar 2012 - 23:44 #7
Lige præcis, gør som Broxigar siger - det kaldes debugging :o)
Jeg tror fejlen ligger i din tabelstruktur (som vi ikke har set endnu)
Avatar billede mojdk Nybegynder
17. februar 2012 - 23:57 #8
Den printer fint min $_POST, så det virker ikke til at problemet lægger der.

I får lige SQL tabellen for en god ordens skyld: http://pastebin.com/yXDZezzA
Avatar billede Broxigar Praktikant
18. februar 2012 - 00:11 #9
1)CHARSET=latin1
Hvorfor kører du latin1 ? Du bør køre utf8 med collation utf8_danish_ci for at være sikker på at alle bogstaver og tegn virker.

2)AUTO_INCREMENT=13
er det meningen at ID skal starte fra 13?


Kan det være at du får ændret din $password inde i din include "db/conn.php";
Avatar billede jl4511 Nybegynder
18. februar 2012 - 00:16 #10
Ja, det er snart sagt det eneste sted fejlen kan ligge nu, i db/conn.php
Du kan evt. prøve at gemme "gentag" istedet for password - bare for sjov :o)
Avatar billede olebole Juniormester
18. februar 2012 - 02:30 #11
<ole>

Hvis du er helt ny i MySQL, så lær det ordentligt fra begyndelsen. Drop PHP's forældede mysql-API og kom i gang med mysqli og prepared statements i stedet.

Det er langt sikrere, og du slipper for at 'hacke' dig til tvivlsom sikkerhed med funktioner som mysql_real_escape_string. I tilgift får du væsentligt hurtigere kald, når samme kald skal udføres flere gange.

Et godt sted at begynde kunne være denne lille, letlæste tutorial.

/mvh
</bole>
Avatar billede mojdk Nybegynder
18. februar 2012 - 13:20 #12
Torden og lynild. Det var sørme i min conn.php fejlen var. Jeg havde brugt variablen $password 2 gange :)

Efter det er rettet indsætter den fint og flot passwordet i databasen. Jeg har også fået rettet mit charset til dansk :)

Rigtig mange gange tak for hjælpen. Hvis både Broxigar og jl4511 smider et svar, kan i dele pointne.

@olebole Det kunne måske være en god ide. Men der er faktisk ikke brug for så meget sikkerhed her, da siden ikke skal lægge "frit" tilgængelig. Det skal kun hentes frem når en bestilling er aftalt.

--

Jeg er stødt ind i endnu en pine. Når jeg forsøger at logge ind, siger den at mit brugernavn og password ikke passer sammen. Synes nu ellers jeg har forsøgt at gøre det nemt for mig selv.
Herunder er koden fra siden som tjekker og logger ind:
http://pastebin.com/2ndXPMTM

Undskyld min newbie-ness :)
Avatar billede jl4511 Nybegynder
18. februar 2012 - 13:27 #13
Du giver dem bare til Broxigar - jeg har ikke brug for dem :o)
Avatar billede jl4511 Nybegynder
18. februar 2012 - 13:28 #14
Med hensyn til dit nye problem... igen debugging. Print dine vars ud.
Avatar billede mojdk Nybegynder
18. februar 2012 - 14:49 #15
Amen det er simpelthen verdensklasse. Tænk sig at de midste små fejl kan betyde at hele lortet bryder sammen. Er begyndt at tænke som en programmør nu tror jeg ;)

Endnu engang tak, jl4511
Avatar billede olebole Juniormester
18. februar 2012 - 15:06 #16
- og det er såmænd ikke så svært. Du gør det i alle livets andre situationer, så det er bare at overføre erfaringerne til programmering. Lugter her fælt, må jeg tjekke mine sko og se, om jeg har trådt i noget ... simple as that  *o)
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