Åtgärder

Skillnad mellan versioner av "CS checklogin"

Från Skolbok

m (login_success.php)
m (login_success.php)
Rad 70: Rad 70:
 
  }
 
  }
 
  ?>
 
  ?>
 
+
 
  <html>
 
  <html>
 
  <body>
 
  <body>
Rad 77: Rad 77:
 
  </body>
 
  </body>
  
</body>
 
</html>
 
  
  

Versionen från 9 juni 2012 kl. 18.21

Det finns många ondskefulla personer ute på Internet som gör vad de kan för att hacka databaser, därför måste vi (KISS till trots) ta med en del säkerhetsåtgärder. Bland annat tar vi bort speciella tecken som egentligen används av MySQL bara för att vara säkra på att databasen inte kan manipuleras utifrån.

I PHP kan man skriva ut information på skärmen på två sätt, det ena är med kommandot print, det andra med kommandot echo. De är likvärdiga och det är en smaksak vilket du väljer. bara du har "-tecken före och efter texten samt avslutar med ett semikolon. Problemet uppstår om du vill använda ett semikolon inuti texten. Då tror PHP att du avslutar texten vid det andra semikolonet, vilket du inte gör. För att få det att fungera måste du sätta en backslash framför \" .


I koden här nedanför finns:

session_register("myusername");
session_register("mypassword");

Det innebär på svenska att servern sparar en liten textfil där ditt användarnamn och lösenord finns med. Så länge du inte stänger webläsaren kommer du att vara registrerad som inloggad, vilket är precis vad vi är ute efter. Vi vill ju inte att snokande elever skall kunna hitta allt du sparat i din lilla databas, eller hur? Genom att hålla reda på om du är inloggad eller inte kan vi skriva viss kod som visas för inloggade, och annan kod som visas för oinloggade.

Fyll i header och footer precis som i förra exemplet, och däremellan fyller du i:

<?php

//Olika viktiga variabler
$host="localhost"; // Host , på en privat dator duger oftast localhost
$username="root"; // Mysql användarnamn, antagligen root
$password="password1"; // Lösenord till root, kan t.ex. vara password1
$db_name="skolan"; // Databasens namn
$tbl_name="teacher"; // Tabellens namn

// Anslut till MySQL servern och välj rätt tabell
mysql_connect("$host", "$username", "$password")or die("Kan inte ansluta till databasen");
mysql_select_db("$db_name")or die("Kan inte välja datatabellen");

// Användarnamn och lösenord skickade från loginformuläret
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// För att förhindra databashackning
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

//Välj rätt person utifrån inloggningsnamn och lösenord
$sql="SELECT * FROM $tbl_name WHERE LOGIN='$myusername' and PASS='$mypassword'";
$result=mysql_query($sql);

// Räkna antalet rader som hämtas, 1= ok, 0 = finns inte
$count=mysql_num_rows($result);

//Om man hittade en användare?
if($count==1){

// Registrera $myusername, $mypassword i sessionen och skicka användaren till filen "login_success.php"
session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
else {
echo "Fel användarnamn eller lösenord";
echo "<br>";
echo "Tillbaka";
}
//Om användarnamn och/eller lösenord var fel måste användaren få reda på det. En länk sänder honom tillbaka för ett nytt försök.
?>

Spara filen som checklogin.php i var/www mappen så att Apache kan hitta den.

login_success.php

Nu behöver vi kunna göra en enkel test om inloggningen faktiskt fungerat. Koden (förutom header och footer) är:

<?php
//I framtiden måste följande fyra rader alltid finnas överst i varje fil
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
?>

<html>
<body>
Din inloggning gick perfekt!
Till huvudsidan
</body>


Källa: http://www.phpeasystep.com/phptu/6.html