Отваряне на страници без логин

vinsbg

Registered
Сигурно нещо дребно изпускам, но нещо не мога да се оправя. Имам 2 страници, които искам да могат да се отварят свободно.

search.php и results.php. В двата файла инклудвам connection.php, който пък има session_start() и реално стартира сесията.

И тук идва проблема, че ми е нужен този файл, а с него ако юзъра не е логнат го праща към логин страницата.

Опитах да добавя нещо такова в search.php
Код:
<?php
if(!$_SESSION['login'] || $_SESSION['login']){
include 'connection.php';
 
// още код тук

}
?>
<html>
<head></head>
<body>

search form

</body>
</head>
Това ясно, че няма да проработи, защото то реално проверява за сесията, но като си влезе в if-a си стартира сесията..

нещо май съм зациклил и не мога да измисля, какво да правя.
 
Аз не разбирам какво се опитваш да направиш?

Проблема е, че connection.php ти трябва, но той вътре в себе си има код, който препраща към логин страницата. А ти не искаш да препраща?
 
Fakeheal каза:
Аз не разбирам какво се опитваш да направиш?

Проблема е, че connection.php ти трябва, но той вътре в себе си има код, който препраща към логин страницата. А ти не искаш да препраща?
Да. Искам да препраща, но определни страници да бъдат екслуднати.. и за тях да не важи

Имам това
Код:
if(!isset($public) && !isset($_SESSION['login']) && !$_SESSION['login']){

    header('Location: signup.php');
    exit;

}
трябва да проверя най-вероятно коя страница се опитва да отвори потребителя..

edit: то аз като се замисля май няма голям смисъл от това точно там..
 
Че викай си файла в началото, после си прави проверката и ако не ти харесва го препращаш.

Макар че за точно тези два файла не ти трябват проверки дали потребителя е логнат. Нали все пак идеята ти е да са достъпни по всяко време. За това просто в началото се уверявай, че ти е извикан connection.php. Не прави сложнотии от рода "първо проверявам, после вкарвам файла".
 
Аз съм 'за' да си оправиш кода, както те съветват колегите, защото става батак.

Но ако искаш да мажеш ето как трябва да стане:

Код:
$_this_file = basename($_SERVER["SCRIPT_FILENAME"], '.php');

$notRedirectIfThesePages = ["search","results"]; // BEZ .php

if(!isset($public)
&& !in_array($_this_file, $notRedirectIfThesePages)
 && !isset($_SESSION['login']) 
&& !$_SESSION['login']){ 

    header('Location: signup.php'); 
    exit; 

}

Имай предвид че това е грешно от гледна точка на структура. В момента не е толкова зле, но след 2-4-7 дена ще добавиш още 5 изключения, а може би след година още 6-7 и ако се наложи да добавиш още една проверка става батак. В такъв случай може би ще трябва да изнесеш проверката в отделна функция или да я вкарваш само в определените файлове в които искаш и във всички останали да няма, щото като гледам на там отиват работите хах ;д

Иначе успех, само, моля, обмисли си добре структурата и намери по-добър начин от този :) :?: :idea:
 

Горе