<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<script type="text/javascript">
<!--
location.replace("http://www.new.site/page.html"); // текущая страница будет заменена в history на новую — важно в плане юзабилити
//-->
</script>
<noscript>
<meta http-equiv="refresh" content="0; url=http://www.new.site/page.html"> <!-- для тех нескольких процентов «сёрферов», которые отключили JavaScript -->
</noscript>
</head>
<body>
Мы перебрались на <a href="http://www.new.site/page.html">новое местечко</a>.
</body>
</html>
вопрос про web форму
Страница login.php
Код:
//валидация полей формы, если валидация успешна, то авторизация
//и переход на главную страницу main.php
echo '<script type="text/javascript">location.href="main.php"</script>';
<form action="login.php" method="post">
//бла бла бла...
<input type="submit" />
</form>
//и переход на главную страницу main.php
echo '<script type="text/javascript">location.href="main.php"</script>';
<form action="login.php" method="post">
//бла бла бла...
<input type="submit" />
</form>
Это правильный подход? или как-то переадресацию можно по другому сделать? Или я вообще не понимаю? Можно ли сделать средствами PHP без вот таких штук в заголовке header ("location: main.php");
или почти как у тебя
а меня собственно смущает то что нужно перенаправлять используя прямое перенаправление! это нормально, да? так на всех форумах и сайтах делается?
[HTML]<META HTTP-EQUIV="REFRESH" CONTENT="N;URL=адрес">[/HTML]
Т.е. ,например, форма авторизации у вас на main.php
Для формы в action у вас стоит скрипт auth.php...
И в этом auth.php при успешной авторизации выкидываете:
[HTML]
<html>
<head>
<META HTTP-EQUIV="REFRESH" CONTENT="5;URL=index.php">
</head>
<body>
Авторизация успешна. Сейчас вы будете перенаправлены на главную страницу
</body>
</html>[/HTML]
но не понимаю! у меня куча форм на добавление информации в базу данных! а то о чем говорите вы, делается в разделе head, т.е. в заголовке страницы! допустим одну переадресацию я так проверну, а как остальные? или опять я что-то не понимаю?
создайте единый скрипт, который будет обрабатывать все ваши формы, и в скрытом поле из каждой формы передавайте адрес возврата.
например:
<input type="hidden" name="back" value="http://mysite.ru/forms/" />
и потом так же отдавайте в head;
Код:
<META HTTP-EQUIV="REFRESH" CONTENT="5;URL=<?=$_POST["back"]; ?>">
5 - это время в милисекундах я так понимаю!
Цитата: twi5ter
CONTENT="5;URL=<?=$_POST["back"]; ?>">
5 - это время в милисекундах я так понимаю!
5 - это время в милисекундах я так понимаю!
В секундах...
Читайте: _http://www.shtogrin.com/library/web/meta/http_equiv_refresh/
Цитата: twi5ter
Здравствуйте! А вот решил поинтересоваться, правильно я понимаю или нет! Ситуация такая! Например, кликнули по ссылке, загрузилась страничка авторизации, при успешной авторизации необходимо осуществить переход на главную страницу main.php. Я делаю так!
Страница login.php
Это правильный подход? или как-то переадресацию можно по другому сделать? Или я вообще не понимаю? Можно ли сделать средствами PHP без вот таких штук в заголовке header ("location: main.php");
Страница login.php
Код:
//валидация полей формы, если валидация успешна, то авторизация
//и переход на главную страницу main.php
echo '<script type="text/javascript">location.href="main.php"</script>';
<form action="login.php" method="post">
//бла бла бла...
<input type="submit" />
</form>
//и переход на главную страницу main.php
echo '<script type="text/javascript">location.href="main.php"</script>';
<form action="login.php" method="post">
//бла бла бла...
<input type="submit" />
</form>
Это правильный подход? или как-то переадресацию можно по другому сделать? Или я вообще не понимаю? Можно ли сделать средствами PHP без вот таких штук в заголовке header ("location: main.php");
Если JavaScript у клиента выключен, то такой подход не сработает. Все таки лучше через header("location: main.php")
Цитата: Swedman
Если JavaScript у клиента выключен
Если JS у клиента выключен, то он скорее всего специально это сделал, и знает какие могут быть последствия, иначе в современном Интернете вообще ничего нельзя сделать.
Это не повод переводить на яваскрипт то, что решается и без него.
Код:
Поэтому вот избыточный, но в плане юзабилити лучше способ переадресации. Если js включен то в истории текущая страница (например там index.php?do=login&oldsrc=index.php обычному пользователю сайта нифига не интересная) будет заменена на ту, на которую идет редирект. Если js отключен - то обычный редирект через метатэг.