Olen etsinyt ohjeita tällaisen toteutukseen ilman tulosta joten kokeilen täältä.
Mitä haluan?
Osan sivustostani niin että sinne pääsee vain kirjautumalla "rekisteröityneet" käyttäjät (tunnus & salasana). Toteutus ilman tietokantaa.
Voin itse lisätä manuaalisesti kunkin rekisteröityneen käyttäjän.
(uusia käyttäjiä ei tule päivittäin joten ei ongelma)
Sivuston etusivulle tulee kohta johon kirjoittamalla tunnuksen ja salasanan pääsee ns. jäsenalueelle.
Miten tällainen siis toteutetaan. Kaikki apu kelpaa, linkit, koodinpätkät, selitykset jne...
Kiitokset jo etukäteen.
Kiitokset tuosta. Saako aloittelija vielä hieman apua koodin käytännön sijoitteluun. Eiköhän tämä tällä sitten onnistu erinomaisesti.
Kiitokset jo etukäteen!
Tuota TsaTsaTsaan linkin takana olevaa koodivinkkiä hyväksikäyttäen, lisää tälläinen pätkä salatun sivun alkuun:
<?php session_start(); if ($_SESSION["sess_tunnus"]) && $_SESSION["sess_iposoite"] == $_SERVER["REMOTE_ADDR"]) //Tarkistetaan, onko sess_tunnus annettu ja ip-osoitteet on samat { ?> Tähän kaikki jotka haluat näyttävän vain sisäänkirjautuneille <?php }else{ //Jos ei ole annettu sess_tunnusta tai ip-osoitetta ei ole annettu tai ei ole sama ?> Tähän kaikki jotka haluat näyttävän ei sisäänkirjautuneille. Esim. kirjautumislomakkeen <?php } ?>
Tuolla koodivinkin ensimmäisessä kommentissa kyllä lukee:
Tumpi kirjoitti:
Unohtui mainita, että tiedostojen "suojaus" toimii lisäämällä alkuun:
<?php include("tarkista.php"); ?>
joka säästää hieman vaivaa verrattuna tuohon EgeTheGod tapaan.
kiitokset näistä kommenteista, taas meni asia hieman eteenpäin mutta edelleen hieman apua sijoitteluun kaipaisin.
Miten siis sijoittelen ja linkitän tuon koodivinkin joka on linkissä? Sen verran uutta on tämä että en ymmärtänyt. Jos joku ystävällinen ihmeinen voisi sen koodin copy/pasteta tähän ketjuun ohjeilla niin olisin siitä kiitollinen. Tai saa sen mailatakin webchester@netti.fi.
Vielä minäkin jokupäivä opin.... =)
Itse olen yhden kokeilun tehnyt ja se on jonkin verran erilainen kuin tuossa vinkissä. Tämmönen:
***** ylaosa.php <?php session_start(); ?> <head> <title>MUN KOTISIVUT</title> </head> <body bgcolor=.....> <?php // Jos ei olla sisällä, näytetään kirjautumislomake if (empty($_SESSION["sess_tunnus"]) || $_SESSION["sess_ip"] != $_SERVER[$ { $sisassa = false; ?> <form action="login.php" method="post"> Tunnus: <input type="text" name="tunnus"> Salasana: <input type="password" name="salasana"> <input type="submit" value="Kirjaudu"> <a href="rekister.php">Rekisteröidy nyt!</a> </form> <?php } // Ollaan jo sisällä else { // Tämä sitä varten, että voi helposti tarkistaa, ollaanko sisällä $sisassa = true ?> Olet kirjautuneena tunnuksella: <?php echo $_SESSION["sess_tunnus"]; ?> <a href="logout.php">Kirjaudu ulos</a> <?php } ?>
***** login.php <?php session_start(); $tt = file("ktjs.txt"); // Tiedosto, jossa käyttäjätunnukset ja salasanat $tunnus = $_POST['tunnus']; $sala = md5($_POST['salasana']); $rivi = 0; $loyty = false; // Etsitään käyttäjätunnuksen rivinumero for ($i = 0 ; $i < count($tt) ; ++$i) { if (trim($tt[$i]) == $tunnus) { $loyty = true; break; } // Kasvatetaan rivinumeroa ++$rivi; } if ($loyty) { // Salasana tiedostossa tunnuksen jälkeisellä rivillä if ($sala == trim($tt[$rivi+1])) { // KIRJAUTUMINEN ONNISTUI // sessionit kuntoon session_register("sess_tunnus"); $_SESSION["sess_tunnus"] = $tunnus; session_register("sess_ip"); $_SESSION["sess_ip"] = $_SERVER["REMOTE_ADDR"]; header("Location: index.php"); } else { // Väärä salasana echo "Väärä salasana.<br>"; } } else { echo "Virheellinen käyttäjätunnus.<br>"; } echo "<br><a href=\"index.php\">Etusivulle</a>"; ?>
**** logout.php <?php session_start(); session_unregister("sess_tunnus"); session_unregister("sess_ip"); header("Location: index.php"); ?>
***** rekister.php <?php include("ylaosa.php") ?> <h2>Rekisteröityminen</h2> <form method="post" action="register.php"> <table width="0%"> <tr> <td>Käyttäjätunnus: </td> <td><input type="text" name="usrname"></td> </tr> <tr> <td>Salasana: </td> <td><input type="password" name="passwd"></td> </tr> <tr> <td>Varmennus: </td> <td><input type="password" name="varmuus"></td> </tr> <tr> <td><input type="submit" value="Rekisteröidy"></td> <td></td> </tr> </table> </form> <?php include("alaosa.php") ?>
**** register.php <?php // register.php // Skripti, joka tallettaa uuden käyttäjän tiedot // tiedostoon ktjs.txt $tiedot = file("ktjs.txt"); $tunnus = $_POST['usrname']; // Katotaan, onko tunnus varattu $varattu = false; for ($i = 0 ; $i < count($tiedot) ; ++$i) { if (trim($tiedot[$i]) == $tunnus) { $varattu = true; } } if ($varattu) { // Jos varattu, kerrotaan siitä käyttäjälle ja // näytetään linkki rekisteröintisivulle echo "Valitsemasi tunnus on jo käytössä.<br><br>"; echo "<a href=\"rekister.php\">Takaisin</a>"; } elseif (strlen($_POST['passwd']) < 4 || strlen($tunnus) < 1) { // Liian lyhyt salasana echo "Liian lyhyt salasana(alle 4 merkkiä) tai tyhjä käyttäjätunnus!<br>"; echo "<a href=\"rekister.php\">Takaisin</a>"; } elseif ($_POST['passwd'] != $_POST['varmuus']) { // Jos salasana ja varmennus ei täsmää echo "Salasanat ei täsmää!<br><br>"; echo "<a href=\"rekister.php\">Takaisin</a>"; } else { $tt = fopen("ktjs.txt", "a"); fwrite($tt, $tunnus."\n"); fwrite($tt, md5($_POST['passwd'])."\n"); fclose($tt); // Ohjataan käyttäjä etusivulle header("Location: index.php"); } ?>
**** alaosa.php </body> </html>
***** index.php esim tämmönen <?php include("ylaosa.php") ?> <b>Hei! Nämä on mun kotisivut!</b> <?php include("alaosa.php") ?>
ylaosa.php ja alaosa.php siis pitää includoida kaikissa muissa sivuissa ja niihin voi laittaa esim. valikon ja muuta sälää jonka pitää näkyä kaikilla "alisivuilla".
Toivottavasti tästä oli jotain apua.
nyt on testailtu.
Seuraava koodi tulee näkyviin:
Parse error: syntax error, unexpected ';' in /var/www/customers/xxxxxxxxxxxxxxx/public_html/
Tuo viittaa kohtaan rivillä 15 -
13 - if (empty($_SESSION["sess_tunnus"]) || $_SESSION["sess_ip"] != $_SERVER[$ 14 - { 15 - $sisassa = false;
Miksiköhän näin?
Koska tuo rivi 13 on vähän hassu.
En nyt äkkiseltään keksi, mitä tuolla jälkimmäisellä ehdolla siinä edes halutaan tehdä. Siis minä ottaisin sen kokonaan pois. Ja muista lisätä puuttuva loppusulku.
Siinä taitaa olla nyt jotain enemmänkin pielessä. Kukapa osaisi auttaa asiassa.
Alla koodi joka on tiedostossa ylaosa.php
<?php session_start(); ?> <head> <title>login</title> </head> <body bgcolor=#ECE9D8> <?php // Jos ei olla sisällä, näytetään kirjautumislomake if (empty($_SESSION["sess_tunnus"]) || $_SESSION["sess_ip"] { $sisassa = false; ?> <form action="login.php" method="post"> Tunnus: <input type="text" name="tunnus"> Salasana: <input type="password" name="salasana"> <input type="submit" value="Kirjaudu"> <a href="rekister.php">Rekisteröidy nyt!</a> </form> <?php } // Ollaan jo sisällä else { // Tämä sitä varten, että voi helposti tarkistaa, ollaanko sisällä $sisassa = true ?> Olet kirjautuneena tunnuksella: <?php echo $_SESSION["sess_tunnus"]; ?> <a href="logout.php">Kirjaudu ulos</a> <?php } ?>
Ja errorviesti on siis:
Parse error: syntax error, unexpected ';' in /var/www/customers/xxxxxxxxxxxxxxxx.com/
Et sitten lisänny sitä puuttuvaa loppusulkua riville 13.
=) juu, en sitten kai jaksanut laittaa... =) Kiitos. Jäi sitten epähuomiossa pois. Katsotaanpas nyt miten kokonaisuus pelittää.
Kappas vaan. Jedistä kopsatessa käynyt hassusti kun ollut liika pitkä rivi. Siinä 13 rivillä lopun siis pitäisi olla
$_SESSION["sess_ip"] != $_SERVER["REMOTE_ADDR"])
<?php if ($_SESSION['sess_ip'] !== $_SERVER['REMOTE_ADDR']) { .. } ?>
Tarkalla vertailulla voi mennä kun ne kuitenkin on samaa tietotyyppiä ja taulukon arvoihin viitatessa on _yleisempää_ käyttää heitto-, ei lainausmerkkejä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.