Gå til innhold

Logg-Inn script: 2-spørsmål


Gjest medlem-77217

Anbefalte innlegg

Gjest medlem-77217

Heisann!

 

Jeg har to problemer som jeg tenkte jeg skulle få fikset her.

 

#1:

----

 

Jeg har en innloggings kode som er bassert på flatfile, men som jeg nå skal gjøre om til mysql. Jeg har kommet fram til noe slikt:

 

$query = mysql_query("SELECT navn FROM db") or die(mysql_error());
$brukerdata = $_POST['query'];
$query2 = mysql_query("SELECT pass FROM db") or die(mysql_error());
$passorddata = $_POST['query2'];

 

 

#2:

----

 

Jeg vil også at folk må logge inn før de kan bruke diverse funksjoner jeg har på siden min, men hvordan gjør jeg dette?

Lenke til kommentar
Videoannonse
Annonse
Gjest medlem-77217

#1:

 

Kan du gi meg et forklart eksempel? Ble veldig usikker nå.

 

Å hva mener du med at jeg har missforstått mysql? Jeg har ikke tatt med connectingen til databasen hvis det er det du tenker på... Det har jeg en egen fil for.

 

#2:

 

Takker, ser greit ut.

Lenke til kommentar

Det ser ut som at du henter ut tabell fra database. Du skal hente ut kolonne fra tabell. Har du én tabell med to kolonner (bruker og pass) eller to tabeller (bruker og pass) med én kolonne hver?

SQL-syntaksen er:

SELECT kolonne FROM tabell

og for flere kolonner:

SELECT kolonne1, kolonne2, kolonne3 FROM tabell

Lenke til kommentar
Gjest medlem-77217

Jeg er helt forvirret nå. La meg prøve å forklare hvordan jeg tror det er.

 

Database

-Tabell

--Kolonne

 

Så når du har SELECT kolonnen (som da f.eks er pass VARCHAR (1) NOT NULL) FROM tabllen (som da er db). I dette tilfellet har jeg 1 tabell med to kolonner.

-----

 

Men kan du ikke skrive en snurt som henter info fra mysql og sammenligner det med $_POST funksjonen? Hadde satt pris på det.

Lenke til kommentar

Du kalte tabellen for db (database), og kjørte nesten samme spørringen mot databasen to ganger. Derfor begynte jeg å tvile.

PHP
<?php

// Uskadeliggjør brukernavn

$username mysql_real_escape_string($_POST['user']);

 

// Kjør spørring

$result mysql_query("SELECT name, pass FROM db WHERE name = '{$username}' LIMIT 1");

 

// Hent ut data fra resultatet og lag array av det.

$user_data mysql_fetch_assoc($result);

 

// Hvis passord fra database er lik passord i POST

if ($user_data['pass'] === $_POST['pass']) {

// LOGG INN

} else {

// Passord eller brukernavn er feil

}

?>

Veldig enkel MySQL og PHP hvis man har satt seg inn i bruken av dem.

 

Edit: Men å lagre brukernes passord i klartekst er ikke veldig sikkert. Da kan enten du eller en cracker fort misbruke dem. Selv ville jeg vært så ærlig mot brukerne at jeg hadde både saltet og hashet passordene.

Hvis det er et system der flere brukere skal registrere seg da, og ikke bare du.

Endret av endrebjorsvik
Lenke til kommentar

<?php

// henter data fra DB
$res = $db->query('SELECT * FROM tabell');

// henter data ut fra DB-resultatet (første raden)
$row = $res->fetch_assoc();
// $row er da en array som inneholder alle kolonnene i den første raden

// sammenlign med POSTDATA
if($row['kolonne'] == $_POST['var']) {
 // putt hva som helst her
}

 

EDIT: var vist ikke rask nok

Endret av PHPdude
Lenke til kommentar
Gjest medlem-77217
Du kalte tabellen for db (database), og kjørte nesten samme spørringen mot databasen to ganger. Derfor begynte jeg å tvile.

PHP
<?php

// Uskadeliggjør brukernavn

$username mysql_real_escape_string($_POST['user']);

 

// Kjør spørring

$result mysql_query("SELECT name, pass FROM db WHERE name = '{$username}' LIMIT 1");

 

// Hent ut data fra resultatet og lag array av det.

$user_data mysql_fetch_assoc($result);

 

// Hvis passord fra database er lik passord i POST

if ($user_data['pass'] === $_POST['pass']) {

// LOGG INN

} else {

// Passord eller brukernavn er feil

}

?>

Veldig enkel MySQL og PHP hvis man har satt seg inn i bruken av dem.

 

Edit: Men å lagre brukernes passord i klartekst er ikke veldig sikkert. Da kan enten du eller en cracker fort misbruke dem. Selv ville jeg vært så ærlig mot brukerne at jeg hadde både saltet og hashet passordene.

Hvis det er et system der flere brukere skal registrere seg da, og ikke bare du.

7272133[/snapback]

Men hvordan crypter jeg passord da?

Lenke til kommentar
Gjest medlem-77217

Så da blir det ca:

 

<?php
$username = mysql_real_escape_string($_POST['user']);
$crypted = sha1($username);

$result = mysql_query("SELECT name, pass FROM db WHERE name = '{$crypted}' LIMIT 1");

$user_data = mysql_fetch_assoc($result);

if ($user_data['pass'] === $_POST['pass']) {

} else {
echo "Feil! HAHAHHAHH! DUST!|111";
}
?>

<form name="sporring" method="post" action="innlogging.php" enctype="multipart/form-data">
Brukernavn:  
<input type="text" name="username" maxlength="30">
<br>
Passord:       
<input type="password" name="pass" maxlength="30">
<br>
<input type="submit" value="Logg inn">
</form>

Lenke til kommentar
Gjest medlem-77217

Blir det to mysql_real_escape_string da eller?

 

<?php
$password = mysql_real_escape_string($_POST['password']);
$crypted = sha1($password);
?>

Lenke til kommentar
Gjest medlem-77217

Men hvor skal jeg da plassere crypteringen i denne koden?

 

<?php
// Uskadeliggjør brukernavn
$username = mysql_real_escape_string($_POST['user']);

// Kjør spørring
$result = mysql_query(\"SELECT name, pass FROM db WHERE name = '{$username}' LIMIT 1\");

// Hent ut data fra resultatet og lag array av det.
$user_data = mysql_fetch_assoc($result);

// Hvis passord fra database er lik passord i POST
if ($user_data['pass'] === $_POST['pass']) {
 // LOGG INN
} else {
 // Passord eller brukernavn er feil
}
?>

Lenke til kommentar
<?php
// Uskadeliggjør brukernavn
$username = mysql_real_escape_string($_POST['user']);

// Kjør spørring
$result = mysql_query(\"SELECT name, pass FROM db WHERE name = '{$username}' LIMIT 1\");

// Hent ut data fra resultatet og lag array av det.
$user_data = mysql_fetch_assoc($result);

// Hvis passord fra database er lik passord i POST
if ($user_data['pass'] === sha1($_POST['pass'])) {
 // LOGG INN
} else {
 // Passord eller brukernavn er feil
}
?>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...