Sökes: PHP/MySQL inloggning med redirect

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Karlstad
  • 2005-02-15 20:32

Om jag frågat tidigare, så ber jag om ursäkt....

Letar alltså efter en lösning i PHP/MySQL (eller annat förslag) som erbjuder detta:

Inloggning.
Redirect till användarens privata sidor (alltså: Om Kalle loggar in hamnar han på sina sidor PLUS alla offentliga. OM Olle loggar in hamnar han på sina plus de offentliga. Men varken Kalle eller Olle kan se varandras privata sidor)
Enkel integrering av inloggning i befintlig sida.
Hyfsat enkel backend, men eftersom det inte rör sig om tusentals användarkonton, utan max 100, så behövs inte mycket automatisering.

Har kollat hotscrips.com, scriptsearch.com och andra men inte hittat nåt som passar.
Har du förslag?

Danne

  • Medlem
  • Slöinge
  • 2005-02-16 08:06

Login.php
Login.php tar emot $login och $losen via ett formulär med POST.

$login = $_POST['login'];
$losen = $_POST['losen'];

$sel = mysql_query("SELECT * FROM users WHERE username='$login' AND user_password='$losen'");
$antal = mysql_num_rows($sel);


if($antal == true)
	{

	$arr = mysql_fetch_array($sel);

	session_start();

	$_SESSION["authed"] = true;
	$_SESSION["user_id"] = $arr["user_id"];
	
	$user =  $arr["username"];
	$user_id =  $_SESSION['user_id'];

        header("Location: index.php");
}
else
{
	//Detta händer när användarnamnet är fel.
	$_SESSION["authed"] = false;
	$_SESSION["user_id"] = "";
	echo "Användaren finns inte!";
}

index.php

if($_SESSION['authed'] == false)
        {
                //echo ("inte inloggad");
                $login_status = "no";
                // eller skicka tillbaka till login.php
                //header("Location: login.php");
        }

elseif($_SESSION['authed'] == true)
        {
                $login_status = "yes";
                $id = $_SESSION['user_id'];
                $user_level = $_SESSION['user_level'];

                $sel_info = mysql_query("SELECT * FROM users WHERE user_id = '$id'");
                $user_info = mysql_fetch_array($sel_info);
        }
?>

Skriv ut allt och allt som $user_info tinnehåller

Detta har jag använt mig utav och jag tycker att det fungerar fint. Glömt inte att ha "session_start();" överst på alla sidor sen. Och en if-sats som kollar så att man är inloggad.

  • Medlem
  • Karlstad
  • 2005-02-16 18:23

Lessen att jag inte kommit hit och tackat för hjälpen tidigare, så nu gör jag det:
Tack för hjälpen!
Ska kolla detta.

Danne

  • Medlem
  • Stockholm
  • 2005-02-16 20:28

VIKTIGT !

Kör inte dina SQL-frågor utan att köra variablerna genom mysql_real_escape_string.

Dvs

/* tillåtande kod för sql-injections */
$login = $_POST['login'];
$losen = $_POST['losen'];

$sel = mysql_query("SELECT * FROM users WHERE username='$login' AND user_password='$losen'");


/* bättre lösning */
$login = mysql_real_escape_string($_POST['login']);
$losen = mysql_real_escape_string($_POST['losen']);

$sel = mysql_query("SELECT * FROM users WHERE username='$login' AND user_password='$losen'");

Kontrollera även om magic_quotes_gpc() är påslaget, då behöver du köra stripslashes() på variablerna INNAN du kör mysql_real_escape_string.
SQL-injection är när man skickar med sql-kod. Busenkelt att radera hela databasen så som koden ser ut nu.

1
Bevaka tråden