Jump to content
Sign in to follow this  
campusboy

Wordpress, function.php и метод GET

Recommended Posts

Ребята, что-то менят троит, не могу понять, почему не работает код. Если писать код в header.php

<?php
	$country_cnt = $_GET['country'];
	$country_cookie_id = (int) $_COOKIE['country_cookie_id'];
	if ( $country_cnt == 'unknow' )  {
		setcookie('country_cookie_id', null, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
		header('Location: http://test1.ru/');
	}
	if ($country_cnt > 0){
			setcookie('country_cookie_id', $country_cnt, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
			header('Location: http://test1.ru/');
	}
        $mycat_id = (int) $_COOKIE['country_cookie_id'];
	if ($mycat_id > 0) {
		echo '<p><a href="?country=unknow">Сбросить город: 0</a></p>';
		echo '<p>ID:'.$mycat_id.'</p>';
	}
	else {
		 echo '<ul>';
		 echo '<li><a href="?country=1">ID: 1</a></li>';
		 echo '<li><a href="?country=2">ID: 2</a></li>';
		 echo '<li><a href="?country=3">ID: 3</a></li>';
		 echo '</ul>';
	}
	echo 'country_cookie_id: '; print_r($_COOKIE['country_cookie_id']);
	echo '<br>';
	echo 'country: '; var_dump($_GET['country']);
?>

То всё работает. Это код на быструю руку, потому знаю чем он пахнет  :) Тест, тест!

А теперь делаю тоже самое, только перемещаю в function.php

$country_cnt = $_GET['country'];
	$country_cookie_id = (int) $_COOKIE['country_cookie_id'];
	if ( $country_cnt == 'unknow' )  {
		setcookie('country_cookie_id', null, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
		header('Location: http://test1.ru/');
	}
	if ($country_cnt > 0){
			setcookie('country_cookie_id', $country_cnt, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
			header('Location: http://test1.ru/');
}

То запись в куку записывается, а вот перенаправление не работает, хотя  function.php загружается первее header.php.

 

Так тоже не арбайтен (пишется в function.php):

function set_country_cookie() {
	$country_cnt = $_GET['country'];
	$country_cookie_id = (int) $_COOKIE['country_cookie_id'];
	if ( $country_cnt == 'unknow' )  {
		setcookie('country_cookie_id', null, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
		header('Location: http://test1.ru/');
	}
	if ($country_cnt > 0){
			setcookie('country_cookie_id', $country_cnt, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
			header('Location: http://test1.ru/');
	}
}add_action( 'init', 'set_country_cookie');

Подскажите, пожалуйста, что я упускаю?

Share this post


Link to post
Share on other sites

У function.php в теме могут быть ограничения для защиты от всякого-мусора-вируса. Попробуйте так:

<?php

echo <<<HTML
<script type="text/javascript">
document.location = '$location';
</script>
<meta http-equiv="refresh" content="0; url=$location">
HTML;

После header('Location: http://test1.ru/'); ставьте die('номер')

 

Это покажет, срабатывают условия или нет.

Share this post


Link to post
Share on other sites

Может <?php   ............   + function.php это же др каталог совсем ( я про header('Location: http://test1.ru/') ;).

Это WP, там эти файлы в одном каталоге, каталоге темы  :)

 

У function.php в теме могут быть ограничения для защиты от всякого-мусора-вируса. Попробуйте так:

<?php

echo <<<HTML
<script type="text/javascript">
document.location = '$location';
</script>
<meta http-equiv="refresh" content="0; url=$location">
HTML;

После header('Location: http://test1.ru/'); ставьте die('номер')

 

Это покажет, срабатывают условия или нет.

Мне нужно было разобраться иммено в php без JS. Условия срабатывали, кука ведь записывалась всегда правильно. И Вы оказались правы, потому что после отправки заголовка, надо было писать die или exit! Проблема решена! Не стоит в 2 часа ночи такие вещи решать ибо пропустил в описании функции важное  :wacko:

header("Location: http://www.example.com/"); /* Redirect browser */
exit; /* Убедитесь, что последующий код не выполняется, когда мы перенаправляем. */

И почему Вы не используете функцию http://codex.wordpress.org/Function_Reference/wp_redirect??

Я знаю как правильно  :) Задача была разобраться, почему именно в этом коде не работает. За подсказки большое спасибо!

Share this post


Link to post
Share on other sites

Я бы ещё для административной зашиты панели порекомендовал ознакомиться с данной статьёй http://blog.sk8er.name/rabota/zashita-wp-admin.html Она в принципе всё грамотно и подробно объясняет, очень советую почитать, дабы обезопасить себя как можно лучше.

Share this post


Link to post
Share on other sites

Я бы ещё для административной зашиты панели порекомендовал ознакомиться с данной статьёй http://blog.sk8er.name/rabota/zashita-wp-admin.html Она в принципе всё грамотно и подробно объясняет, очень советую почитать, дабы обезопасить себя как можно лучше.

 

Тут писали, что нагрузку лишнюю создает

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...