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.
Miks pitää käyttää PDO:ta? putkassa on useita esimerkkejä, jotka tosin on toteutettu ilman PDO:ta.
PDO:ta siksi, että se vaikuttaa kaikista tavoista selkeimmältä ja olen käyttänyt sitä muissa sivun osissa.
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"; }
Aihe on jo aika vanha, joten et voi enää vastata siihen.