- Отваряне на страници без логин
WT форуми -> PHP MySQL ASP.NET -> Отваряне на страници без логин
Създайте нова тема Напишете отговор 
Автор Съобщение
vinsbg
Редовен
Редовен

Регистриран на: 28/01/2009 2:21 pm

Support: 50
Bonus: 86
Мнения: 2553
Мнение 06/07/2017 3:48 pm     Отваряне на страници без логин Отговорете с цитат


Сигурно нещо дребно изпускам, но нещо не мога да се оправя. Имам 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 си стартира сесията..

нещо май съм зациклил и не мога да измисля, какво да правя.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
Fakeheal
Support
Support

Регистриран на: 17/04/2010 8:37 am

Support: 340
Bonus: 678
Мнения: 2556
Мнение 06/07/2017 3:56 pm      Отговорете с цитат


Аз не разбирам какво се опитваш да направиш?

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

Регистриран на: 28/01/2009 2:21 pm

Support: 50
Bonus: 86
Мнения: 2553
Мнение 06/07/2017 3:59 pm      Отговорете с цитат


Fakeheal написа:
Аз не разбирам какво се опитваш да направиш?

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

Да. Искам да препраща, но определни страници да бъдат екслуднати.. и за тях да не важи

Имам това

if(!isset($public) && !isset($_SESSION['login']) && !$_SESSION['login']){

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

}

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

edit: то аз като се замисля май няма голям смисъл от това точно там..
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
Revelation
Турист
Турист

Регистриран на: 24/03/2013 3:23 pm

Support: 39
Bonus: 78
Мнения: 559
Мнение 06/07/2017 4:17 pm      Отговорете с цитат


Че викай си файла в началото, после си прави проверката и ако не ти харесва го препращаш.

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

Регистриран на: 17/04/2010 8:37 am

Support: 340
Bonus: 678
Мнения: 2556
Мнение 06/07/2017 4:47 pm      Отговорете с цитат


Според мен трябва да разделиш тези неща да не са в един файл.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
joTunkiq
Активен
Активен

Регистриран на: 25/12/2012 12:03 pm

Support: 122
Bonus: 244
Мнения: 756
Мнение 07/07/2017 11:33 pm      Отговорете с цитат


Аз съм 'за' да си оправиш кода, както те съветват колегите, защото става батак.

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

$_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 и ако се наложи да добавиш още една проверка става батак. В такъв случай може би ще трябва да изнесеш проверката в отделна функция или да я вкарваш само в определените файлове в които искаш и във всички останали да няма, щото като гледам на там отиват работите хах ;д

Иначе успех, само, моля, обмисли си добре структурата и намери по-добър начин от този Smile Question Idea
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети