Eli tama on muokkailtu versio tuolta koodivinkeista.
Tama nayttaa kylla lomakkeen ja sen jalkeen tuon "kirjauduit sisaan, jatka klikkaamalla tasta".
Mutta sitten, kun klikkaa siita linkista joka menee admin.php sivulle, niin se ei nayta mitaan silla sivulla.
Eli mika tuossa mattaa?
En ole mikaan php asiantuntija joten alkaa viitsiko nauraa :)
<?php $tarkastus = "tarkista2.php"; //TÄMÄ tiedosto $etusivu = "admin.php"; //sivu jonne mennään kirjautumisen jälkeen //aloitetaan sessionit session_start(); if (empty($_SESSION["sess_tunnus"]) || $_SESSION["sess_iposoite"] != $_SERVER["REMOTE_ADDR"]) { $salat = Array ( "Matti" => "9ef5d6ee4beae84f5d360190d23e1a39", "Teppo" => "6f0cde379edf933770d9440a24786713 " ); //kirjautuminen if (isset($_POST["kirjaudu"])) { if ($salat[$tunnus] == md5($salasana)) { //sessionit kuntoon session_register("sess_tunnus"); $_SESSION["sess_tunnus"] = $tunnus; session_register("sess_iposoite"); $_SESSION["sess_iposoite"] = $_SERVER["REMOTE_ADDR"]; echo "<b>Kirjauduit sisään!</b><br>\n"; echo "Jatka klikkaamalla <a href=\"". $etusivu ."\">tästä</a>."; } else { echo "<b>Virheellinen salasana.</b><br>\n"; echo "Voit kirjautua uudelleen klikkaamalla <a href=\"". $tarkastus ."\">tästä</a>."; } } else { echo "<form action=\"". $tarkastus ."\" method=\"post\">\n"; echo "<b>Kirjaudu sisään</b><br>\n"; echo "Tunnus: <input type=\"text\" name=\"tunnus\"><br>\n"; echo "Salasana: <input type=\"password\" name=\"salasana\"><br>\n"; echo "<input type=\"submit\" value=\"Kirjaudu\" name=\"kirjaudu\">\n"; echo "</form>"; } } exit(); ?>
makeuu kirjoitti:
No sillä admin.php sivulla pitää tietenkin olla tietoa.. !
En nyt noin tyhma ole :) Kylla silla tietoa on.
makeuu kirjoitti:
P.S. Miksi et kirjoita skandeja?
Talla hetkella asustelen vaihto-oppilaana jenkeissa, ja taalla nuo ihmiset ei tykkaa kayttaa skandeja, joten niita ei myoskaan tietokoneen nappaimistolta loydy.
P.S. Jannittelen justiin vaalien tulosta, joka talla hetkella nayttaa todella pahalta.
Tuo exit() tuolla on melko turhan näköinen, eihän siellä mitään tehdä kuitenkaan (ellei ole sitten sopivasti pätkästy koodia pois).
if (empty($_SESSION["sess_tunnus"]) || $_SESSION["sess_iposoite"] != $_SERVER["REMOTE_ADDR"]) {
Jos tuossa tulee falsea, ei tulosteta mitään, olisi varmaan ihan hyödyllistä tulostaa jotain. Empty-funktion käyttö on tuossa ehkä hieman harhaanjohtavaa funktion nimen vuoksi, mieluummin isset ehkä tai ihan vaan != ''. Tuo $salat on varmaan alkuperäisesti luettu tiedostosta tai tietokannasta, ellei käyttäjiä sitten ole kuin muutama harva ja valittu eikä ole kyse elämää suuremmista asioista :).
Salasanan käsittelyn pitäisi olla:
md5($_POST['salasana'])
Submitissa tuskin tarvitsee tuota name-attribuuttia ja muut html-tagit olisi ehkä hyvä löytyä myös.
session_register on wanha tapa, katso oppaasta kohta sessiot & evästeet..
Sidenote:
Hylätyissä quoteissa oli hyvä, AvP-leffasta tunnuslause vaaleihin: Whoever wins, we lose.
Tuo on kylla koko koodi.
Jos tuon exitin ottaa pois, se myos nayttaa kirjautumislomakkeen ja adminsivun ilman kirjautumista. Eli ei hyva.
Paadyin siihen etta tuosa if lauseessa on jotain vikaa
if (empty($_SESSION["sess_tunnus"]) || $_SESSION["sess_iposoite"] != $_SERVER["REMOTE_ADDR"]) {
No on siinä pakosti jotain tulostettavaa tuon exitin jälkeen, jos se kerran ilman sitä tulostaa jotain. Kuten sanoin, tuo empty on melko harhaanjohtava ja turha tuossa. Ja kokeilit kaiketi muutella noita muita mitä ehdottelin? "Päädyit" eli kokeilitko ottaa tuon iffin kokonaan pois tai vähentää noita ehtoja yksitellen?
Echota tuon iffin muuttujien sisältö ruudulle, niin näät suoraan mättääkö niissä.
typo
jideko kirjoitti:
Talla hetkella asustelen vaihto-oppilaana jenkeissa, ja taalla nuo ihmiset ei tykkaa kayttaa skandeja, joten niita ei myoskaan tietokoneen nappaimistolta loydy.
Näppäimistössä on tämän näköinen nappula ¨ siinä enter-napin vieressä.
¨ + a=ä
¨ + o=ö
Aihe on jo aika vanha, joten et voi enää vastata siihen.