php inlogsysteem

Status
Niet open voor verdere reacties.

feint

Gebruiker
Lid geworden
3 jun 2008
Berichten
273
heyhey,

ik heb een inlogsysteem van een website afgehaald zodat ik die kan toepassen op mijn localhost en zo ervan kan leren, aanpassen, etc. nu doet die het goed. alles werkt.

maar het probleem is. zodra je de website opend. springt die meteen door naar de loginpagina wat helemaal niet zou moeten. en zonder in te loggen kan je niks anders van de pagina weergeven. dit zou ten eerste helemaal niet moeten, ik heb een apart scriptje dat zorgt dat pagina's pas worden weergegeven als je ingelogd word. deze zitten er niet in dus de website zou gewoon moeten weergegeven op de restricted area na.

het is misschien een beetje wazig uitgelegd en ik kan helaas op het moment geen online voorbeeld geven.

ik denk dat het in de index zit gezien deze het vanaf het begin zou moeten weergeven. ik zal de index en de loginpagina even neerzetten:
Code:
	<?php include("header1.php"); ?>



<?php  
if(!isset($_GET['p'])){
    include "home.php";}
if($_GET['p'] == "home") {include "home.php";}
if($_GET['p'] == "webd") {include "webdesign.php";}
if($_GET['p'] == "service") {include "service.php";}
if($_GET['p'] == "contact") {include "contact.php";}
if($_GET['p'] == "form") {include "form.php";}
if($_GET['p'] == "register") {include "registrate.php";}
if($_GET['p'] == "user") {include "useroptions.php";}
if($_GET['p'] == "admin") {include "admin.php";}
if($_GET['p'] == "logout") {include "logout.php";}
if($_GET['p'] == "login") {include "login.php";}

?>


	<?php include("header2.php"); ?>



		

	<?php include("sidebar.php"); ?>
	<?php include("sidebar2.php"); ?>
	<?php include("sidebar3.php"); ?>
	

			
	
	<?php include("footer.php"); ?>
Code:
<?php include("header1.php") ?>

			<div id="content">

		<div class="post">
	<h1 class="title">Log in </h1>
	<p class="byline"><small> Posted by <a href="#">Webmaster</a></small> </p>
<BR />
<BR />
</div>
<div class="post2">

<?php

// Page for log-in

include_once("config.php");
include_once("lang/lang_".$lang.".php");
$pml_title = $site_name;

include_once("connect.php");

if(isset($_SESSION['user_id'])) {
 header("Location: ".$afterlogin);
}else{
 if(isset($_COOKIE['user_id'])) {
  // Read cookie, make session
  $sql = "SELECT id,state,password,active FROM `".$db_tbl."` WHERE id='".$_COOKIE['user_id']."'";
  $query = mysql_query($sql);
  $row = mysql_fetch_object($query);
  $id = htmlspecialchars($row->id);
  $status = htmlspecialchars($row->state);
  $dbpass = htmlspecialchars($row->password);
  $actief = htmlspecialchars($row->active);
  if($dbpass == $_COOKIE['user_password'] AND $actief == 1) {
   $_SESSION['user_id'] = $id;
   $_SESSION['user_status'] = $status;
   ?>
   <script language="Javascript" type="text/javascript">
    location.href='<?= $afterlogin ?>';
   </script>
   <?
  }else{
   echo $login_cookiefalse;
   setcookie("user_id", "", time() - 3600);
   setcookie("user_password", "", time() - 3600);
  }
 }else{
  if(isset($_POST['submit'])) {
   // Login
   $sql = "SELECT id,name,password,state,active,cookie_pass FROM `".$db_tbl."` WHERE name='".$_POST['user']."'";
   $query = mysql_query($sql);
   $count = mysql_num_rows($query);
   if($count == 1) {
    $row = mysql_fetch_object($query);
    $dbpass = htmlspecialchars($row->password);
    $userpass = md5($_POST['pass']);
    $cookiepass = htmlspecialchars($row->cookie_pass);
    $userid = htmlspecialchars($row->id);
    $userstatus = htmlspecialchars($row->state);
    $useractief = htmlspecialchars($row->active);
    if($dbpass == $userpass) {
     if($useractief == 1) {
      $_SESSION['user_id'] = $userid;
      $_SESSION['user_status'] = $userstatus;
      if($_POST['cookie'] == "do") {
       if($cookiepass == "") {
        $cookiecode = mt_srand((double)microtime()*100000);
        while(strlen($cookiecode) <= 10) {
         $i = chr(mt_rand (0,255));
         if(eregi("^[a-z0-9]$", $i)) {
         $cookiecode = $cookiecode.$i;
         }
        }
        $sql = "UPDATE `".$db_tbl."` SET cookie_pass = '".$cookiecode."' WHERE name = '".$_POST['user']."' LIMIT 1";
        mysql_query($sql);
        $cookiepass = $cookiecode;
       }
       setcookie("cookie_id", $userid, time() + 365 * 86400);
       setcookie("cookie_pass", $cookiepass, time() + 365 * 86400);
      }
      echo $loginsucces;
      ?>     
      <script language="Javascript" type="text/javascript">
       location.href='<?= $afterlogin ?>';
      </script>
      <?
     }else{
      echo $login_noactive;
     }  
    }else{
     echo $login_nopass;
    }
   }else{
    echo $login_usererr;
   }
  }else{
   // Loginform
   ?>
   <form method="post" action="login.php">
    <table>
     <tr>
      <td><label for="user"><?= $login_username ?>:</label></td><td><input id="user" type="text" name="user" /></td>
     </tr>
     <tr>
      <td><label for="pass"><?= $login_password ?>:</label></td><td><input id="pass" type="password" name="pass" /></td>
     </tr>
     <tr>
      <td align="right"><input id="cookie" type="checkbox" name="cookie" value="do" style="border: 0px;" /></td><td><label for="cookie"><small><?= $login_cookied ?></small></label></td>
     </tr>
     <tr>
      <td></td><td><input type="submit" name="submit" value="<?= $login_login ?>" /><a href="index.php?p=registrate">
     <button>
          Register
     </button></td>
     </tr>



      </table>
    <small><a href="forgotpass.php" title="<?= $login_forgotpass ?>"><?= $login_forgotpass ?></a></small>
   </form>
   <?
  }
 }
}

?>

</div>
		<!-- end content -->

</div>
	<?php include("header2.php"); ?>



		

	<?php include("sidebar.php"); ?>

			
	
	<?php include("footer.php"); ?>

de codes die erin staan zorgen ervoor dat de url bij index blijft en alleen het laatste deel veranderd, nog nooit problemen mee gehad maar ik denk dat het hieraan ligt :confused:

weet iemand hoe ik ervoor kan zorgen dat ik het inloggen niet verplicht maak? gezien je niet naar een ander deel van de pagina kan totdat je bent ingelogd. registreren kan ik wel mits ik hem handmatig open. de link werkt nog niet helemaal naar behoren maar dat is het probleem op het moment ook niet :rolleyes:


alvast bedankt voor de hulp ;)
 
Er zal waarschijnlijk ergens staan dat je als je niet bent ingelogd wordt doorgestuurd naar de inlog pagina, ik gok op header1.php omdat die als eerste wordt geladen en het dus logisch is dat de beveiliging daarin staat.
 
bedankt voor de reactie. in header1 staat geen beveiliging. maar ik zal eens kijken of ik ergens anders iets kan vinden
 
ik heb het probleem opgespoort. maar nu is maar de helft opgelost.
het zat hem in de menuutjes voor als je ingelogd was. deze heb ik apart van het normale menu

ik heb een paar restricted pagina's die ik weergeef in een apart menu. nu wil ik dat deze alleen maar geladen worden zodra ik als users of admin ( verschillende opties mogelijk tussen deze rangen) dat dan 1 van de 2 menuutjes erbij komt. dus als users is dat user menu word weergeven of als je admin bent dat admin menu word weergegeven.

ik ben alleen uit ideeen hoe ik dit zou moeten aanpakken
 
PHP:
if(($_SESSION['rank'] == 'admin') || ($_SESSION['rank'] == 'user'))
{
include('menu2.php');
}

EDIT:

Of dus per groep:

PHP:
if($_SESSION['rank'] == 'admin')
{
include('menuAdmin.php');
}

if($_SESSION['rank'] == 'user')
{
include('menuUser.php');
}

EDIT2:

lol is het rank of rang?
 
Laatst bewerkt:
arg stom dat ik daar niet op gekomen ben :o

ben hier al de hele dag mee bezig en ik denk dus niet meer helder moet misschien maar ff stoppen. :p

bedankt voor je hulp kan ik morgen weer verder. moet nog een hoop leren wil ik dit hele scriptje onder de knie krijgen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan