2016-06-01 17 views

Antwort

0

töten das Skript

if (!isset($_SESSION['USER_ID'])) 
    die(); 

Oder eine freundliche Nachricht drucken, weiterleiten Seite einzuloggen, oder was auch immer Sie denken, ist ein angemessene Antwort. Töte einfach die Seite, bevor du deinen Premium-Inhalt zeigst.

0

In Login-Seite hinzufügen

$_SESSION['user_id'] = $user['id']; 

In-Seite, die Sie, wenn nicht eingeloggt hat nicht erreichbar machen wollen, hinzufügen oben

include ("auth.php"); 

Auth.php

<?php 
session_start(); 
if(!$_SESSION['user_id']){ 
    header("location:index.php"); //page you want to redirect 
} 
?> 

Jetzt können Sie auth.php hinzufügen in jeder Seite, die Sie nicht erreichbar machen wollen, wenn nicht angemeldet ...

+0

Dieser Code leitet um, wenn der Benutzer angemeldet ist. Er muss jedoch umleiten, wenn er nicht angemeldet ist. – John

0

Zunächst einmal müssen Sie jede Seite Ausgabe -vor (auch Warnungen und Fehler):

session_start(); 

So würde der Code vollständig wie folgt:

session_start(); 

if (!isset($_SESSION['USER_ID'])) { 
    header ("Location: login.php"); 
    die; 
} 
+0

Dieser Code leitet um, wenn der Benutzer angemeldet ist. Er muss jedoch umleiten, wenn er nicht angemeldet ist. – John

+0

Sie sind falsch @John, es tut genau das Gegenteil du hast gesagt: '! isset ($ _ SESSION ['USER_ID'])' bedeutet: _NOT EXIST (oder DEFINIERT) Die USER_ID SESSION_ –

0

wenn BENUTZER_ID nicht leer sein könnte es besser ist, dies auch zu überprüfen:

if (isset($_SESSION['USER_ID'] && $_SESSION['USER_ID'] != '')) 

Als eine persönliche Methode für komplexere Login-Prüfungen: Generiere ein zufälliges Token, wenn sich der Benutzer anmeldet und in der Datenbank speichert und eine zusätzliche Sitzung einlegt. Überprüfen Sie dann, ob der Benutzername und die zufällige Sitzung durch eine Datenbanküberprüfung übereinstimmen. Dies verhindert Angriffe durch jede Art von Betrug in der Sitzung und den Namen von Cookies.

+1

Noch besser: 'if (! leer ($ _ SESSION [ 'USER_ID'])) denkst du nicht? empty() doc: [link] (http://php.net/manual/en/function.empty.php) –

+0

Vielen Dank. Ja. empty() mache beide Prüfungen zusammen. Ich habe betont, den Blankoscheck nicht zu vergessen. –

Verwandte Themen