Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Sisäänkirjautuminen PDO:lla

Daih [16.02.2010 17:31:15]

#

Hei, eli olen pähkäillyt tässä pitkään sisäänkirjautumisen kanssa ja käytän siinä apuna mysql niin ei oikein onnistu. Koodivinkkejä olen katsonut ja niitä seuraamalla olen saanut melkein toimivan systeemin, mutta se on niin kamalaa purkkaa, että sitä on turha täällä näyttää.

Pyytäisinkin joltain palvelusta jos hän loisi PDO:ta käyttävän MySQL tietokantaan pohjautuvan yksinkertaisen sisäänkirjautumisen. Ainoat asiat, jotka pitäisivät löytyä olisi sisään ja ulos kirjautuminen, sekä kirjautumisen tarkistaminen. Muun toiminnallisuuden kyllä pystyn itse toteuttamaan ilman ongelmia.

vehkis91 [16.02.2010 17:39:31]

#

Miks pitää käyttää PDO:ta? putkassa on useita esimerkkejä, jotka tosin on toteutettu ilman PDO:ta.

Daih [16.02.2010 17:56:00]

#

PDO:ta siksi, että se vaikuttaa kaikista tavoista selkeimmältä ja olen käyttänyt sitä muissa sivun osissa.

Metabolix [16.02.2010 21:11:31]

#

Ihan omasta päästä ja testaamatta kaikki, mutta kokeillaanpa.

<?php # yhteys.php
function db() {
    static $db;
    if (empty($db)) {
        $db = new PDO("mysql:host=localhost;dbname=KANTA", "TUNNUS", "SANA");
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    return $db;
}
<?php # sisaan.php
include("yhteys.php");
session_start();
if (!isset($_POST['tunnus']) || !isset($_POST['salasana'])) {
    die("Tietoja puuttuu!");
}
$kysely = "SELECT id FROM kayttaja WHERE tunnus = ? AND salasana = ?";
$kysely = db()->prepare($kysely);
$kysely->execute(array($_POST['tunnus'], md5($_POST['salasana']."SUOLA")));
if (!$kysely->fetchAll()) {
    die("Virheelliset tiedot!");
}

$_SESSION['kayttaja'] = $_POST['tunnus'];

$url = "http://". $_SERVER['HTTP_HOST']. dirname($_SERVER['SCRIPT_NAME']);
header("Location: $url/sivu.php");
<?php # ulos.php
session_start();
unset($_SESSION['kayttaja']);
<?php # sivu.php
session_start();
if (isset($_SESSION['kayttaja'])) {
    echo "Heippa, ", htmlspecialchars($_SESSION['kayttaja']), "!\n";
} else {
    echo "Kirjaudu ensin!\n";
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta