2017-10-10 2 views
0

Débutant ici se demandant ce que j'ai fait de mal. Après avoir accédé à profile.php et être redirigé vers login.php, puis connecté, l'utilisateur est toujours redirigé vers l'URL BASE. Je veux que l'utilisateur soit redirigé vers profile.php.PHP Rediriger vers l'URL de BASE après la connexion plutôt que la page précédente

profile.php

if (!isset($_SESSION['id'])) { 
    $_SESSION['redirect'] = $_SERVER['REQUEST_URI']; 
    $url = BASE_URL . 'login.php'; 
    ob_end_clean(); 
    header("Location: $url"); 
    exit(); 

} else { 
    echo 'Logged in' 
} 

login.php

$q = "SELECT * FROM users WHERE (username='$username' AND password=SHA1('$password'))"; 
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br>MySQL Error: " . mysqli_error($dbc)); 

if (@mysqli_num_rows($r) == 1) { 
    $_SESSION = mysqli_fetch_array ($r, MYSQLI_ASSOC); 
    mysqli_free_result($r); 
    mysqli_close($dbc); 

    $url = BASE_URL . $_SESSION['redirect']; 
    ob_end_clean(); 
    header("Location: $url"); 
    exit(); 
} else { 
    echo 'Message'; 
} 

également essayé d'utiliser la variable $ _GET mais le même problème se produit. Très confus avec ce qui ne va pas.

+0

Votre '$ url' (utilisé dans' header() ') est défini sur' BASE_URL. $ _SESSION ['redirect'] '. Si vous essayez de les rediriger vers profile.php, ne devrait-il pas être défini sur profile.php? –

+0

@Obsidian Age Je veux que le formulaire de connexion fonctionne pour plusieurs pages de redirection, pas seulement la page profile.php. Donc, si j'avais une autre page où la connexion était nécessaire, elle redirigerait vers ladite page plutôt que vers profile.php – Qwerty

+1

Que se passe-t-il si le mot de passe de [Little Bobby] (http://bobby-tables.com/) est 'pwn ')) OU 1 = 1; --' dans ce cas [votre script est à risque pour les attaques par injection SQL] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php). En savoir plus sur les instructions [prepared] (http://en.wikipedia.org/wiki/Prepared_statement) pour [MySQLi] (http://php.net/manual/fr/mysqli.quickstart.prepared-statements.php). Même [échapper la chaîne] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) n'est pas sûr! –

Répondre

0
$_SESSION = mysqli_fetch_array ($r, MYSQLI_ASSOC); 

détruisait les variables de session stockées précédentes.