Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kirjautuminen ilman tietokantaa

Sivun loppuun

webchester [08.05.2007 21:30:36]

#

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.

TsaTsaTsaa [08.05.2007 21:58:15]

#

https://www.ohjelmointiputka.net/koodivinkit/23878-php-kirjautuminen-sessioneilla

webchester [08.05.2007 23:06:33]

#

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!

EgeTheGod [09.05.2007 00:00:56]

#

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
}
?>

ajv [09.05.2007 00:08:17]

#

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.

webchester [09.05.2007 11:08:40]

#

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.... =)

TsaTsaTsaa [10.05.2007 14:33:12]

#

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.

webchester [14.05.2007 11:04:22]

#

nyt on testailtu.

Seuraava koodi tulee näkyviin:


Parse error: syntax error, unexpected ';' in /var/www/customers/xxxxxxxxxxxxxxx/public_html/ylaosa.php on line 15

Tuo viittaa kohtaan rivillä 15 -

13 - if (empty($_SESSION["sess_tunnus"]) || $_SESSION["sess_ip"] != $_SERVER[$
14 - {
15 -   $sisassa = false;

Miksiköhän näin?

Blaze [14.05.2007 12:13:19]

#

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.

webchester [14.05.2007 12:54:33]

#

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/public_html/ylaosa.php on line 15

Blaze [14.05.2007 14:24:18]

#

Et sitten lisänny sitä puuttuvaa loppusulkua riville 13.

webchester [14.05.2007 14:32:23]

#

=) juu, en sitten kai jaksanut laittaa... =) Kiitos. Jäi sitten epähuomiossa pois. Katsotaanpas nyt miten kokonaisuus pelittää.

TsaTsaTsaa [14.05.2007 18:47:43]

#

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"])

tsuriga [14.05.2007 18:51:05]

#

<?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ä.


Sivun alkuun

Vastaus

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

Tietoa sivustosta