2014-09-04 3 views
-1

J'ai des sessions utilisateur pour que l'utilisateur se connecte. Le problème est que n'importe qui peut ouvrir les liens côté serveur directement.Utilisation de sessions dans les opérations de base de données

Par exemple: http://mylink.com/foldername/json/json_example.php

Si quelqu'un naviguer sur le lien ci-dessus, il ouvre directly.So Je veux sécuriser les opérations de base de données (certains magasins à travers JSON) et mes côté serveur les fichiers PHP en utilisant besoin sessions.I pour vérifier la session de l'utilisateur avant d'effectuer des opérations de base de données et avant l'ouverture de chaque page du côté serveur.

Le code ci-dessous je l'ai utilisé pour les sessions utilisateur:

<?php 
ob_start(); 
session_start();  
if(isset($_SESSION['user'])){ 
header('Location: home.php');} 
?> 
<html> 
<head> 
<body> 
<section class="container"> 
    <div class="login"> 

     <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>"> 
     <p><input type="text" name="username" placeholder="Username" id="username"></p> 
     <p><input type="password" name="password" placeholder="Password" id="password"></p>   
     <p class="submit"><input type="submit" name="login" value="Login"></p> 

     </form> 
    </div> 
<?php 

    if(isset($_POST['login'])) { 
    require_once('db/connection.php'); 
    $username=$_POST['username']; 
    $password=md5(mysql_real_escape_string($_POST['password'])); 
    $query=mysql_query("select * from tablename where username='$username' and password='$password'"); 
    $row=mysql_num_rows($query); 
    if ($row == 1){ 
     session_start(); 
     $a=mysql_fetch_array($query);  
     $_SESSION['user']=$a['username']; 
     $_SESSION['pref']=$a['preference'];   
     header("location: home.php");    
     } else { 
     echo "wrong username/password"; 
     } 
    } 
?> 

</section> 

S'il vous plaît aider à résoudre le problème.

Merci.

Répondre

0

Pour bloquer l'accès aux fichiers qui sont inclus dans les autres et ne doivent pas être directement accessibles: Ajoutez à cela les pages qui sont directement accessibles, comme index.php:

//This will prevent loading the included scripts as stand alone scritps. 
define('SECURE', true); 

et ceci dans le script vous ne voulez pas être consulté par toute personne directement

//Security check 
!defined('SECURE') and exit("You should not be here.<br>Go back to the <a href='index.php'>home</a> page."); 

pour bloquer l'accès à tout type de fichier aux utilisateurs qui ne sont pas connectés, ajoutez ceci:

if (!isset($_SESSION['user'])) 
    exit("You should not be here.<br>Go back to the <a href='index.php'>home</a> page."); 
+0

Merci ... Ça fonctionne – user3313444

+0

Heureux de l'entendre. Pourriez-vous accepter ma réponse s'il répond à votre question? Merci, bonne chance! –

0

Est-ce quelque chose que vous attendez avec impatience?

if(!isset($_SESSION['user'])){ 
header('Location: login.php');} 

Notez le ! au début de l'émission. Cela signifie que si la variable utilisateur n'est pas définie dans la session, elle redirigera vers login.php.

Questions connexes