Въпрос за едно пренасочване след логин към прединия адрес от където се е влязло

mvmrik

Well-Known Member
Направих по един начин да ми пренасочва след логин в сайта на предишния адрес от който е влязъл потребителя по този начин:

В самия линк за вход се добавя накрая ?redirect=http://адреса

После във файла login.php съм сложил това:
if (isset($_GET['redirect'])) {
$redirect = $_GET['redirect'];

След това долу има:
header('Location:'.$redirect);

Целта е като някой кликне на Вход да се логне и да се върне от където е дошъл - между другото си работи екстра, има само един проблем. Ако някой натисне върху Вход и после го натисне пак се получава нещо такова:
?redirect=http://адрес?redirect=http://адрес

10 пъти да го натисна - 10 пъти става така и после като се влезе направо забива браузъра и изписва че има прекалено много пренасочвания.

Та въпроса ми е какво може да се направи с това - гледах vbox ползват същото нещо, но при тях като въведа няколко пъти това в адреса после си го отваря нормално, явно гледа само първото. Имате ли идея как да го направя при мен?
 
От: Въпрос за едно пренасочване след логин към прединия адрес от където се е влязло

То и аз съм непрофесионалист и ако е нещо по-сложно няма и да мога да го направя :) Това поне работи, а и щом и vbox са по същия начин явно не е толкова зле. Просто някаква команда явно трябва да се въведе да проверява ако има повече от едно ?redirect
 
От: Re: Въпрос за едно пренасочване след логин към прединия адрес от където се е вляз

и изниква следният проблем
Код:
https://www.vbox7.com/login/?backto=http:%2F%2F%2Fsomesite.com&secure=1

В това какъв е проблема не разбрах, всеки може да въведе нещо ръчно, но едва ли някой потребител ще го прави а и не вреди с нищо на сайта.

Аз го направих при мен да проверява ако има ?redirect в линка горе да не го слага пак и така работи, друг е въпроса че някой може ръчно да въведе нещо, но пък това едва ли ще има някакви последици, освен че няма да му се отвори нормално сайта.
 
може да предадеш параметъра 1я път, да му направиш някаква валидация и да го запазиш в сесията. Като се логне потребителят, да го пренасочиш накъдето ти е праметърът в сесията. Така между двете действия правиш каквото и където си искаш
И защо разсъждаваш само от страната на потребителя, ами тъмната страна ?
 
От: Въпрос за едно пренасочване след логин към прединия адрес от където се е влязло

Ами не разбирам чак толкова, ще видя някой да го фиксне по-нататък. Тъмната страна я гледам и нея, но какво може да стане ако някой въведе повече пренасочвания ръчно?
 
От: Въпрос за едно пренасочване след логин към прединия адрес от където се е влязло

Не мога да си го представя къде точно излиза този бутон за вход, но ще ти дам генерален съвет. Използвай preg_match(), за да провериш дали в URL-то на сайта, към който пренасочваш, се съдържа името на твоя сайт. Нещо такова:

PHP:
$redirectUrl = 'http://site.com/blabla.php';
if (preg_match('!site.com!', $redirectUrl) > 0)
    unset($redirectUrl);
 
От: Въпрос за едно пренасочване след логин към прединия адрес от където се е влязло

Ще го видя да, това е добра идея.
 

Горе