Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 916
от 09.03.2008, 13:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 469, Экспертов: 45
В номере:Вопросов: 1, Ответов: 3

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 125874: Здравствуйте, уважаемые участники форума! У меня такая проблема: я пока не знаю MySql по этому хотел написать такой скрипт определяющую реферера посетителя: <?php $var = $_POST["refid"]; if ($var = "11111111") ...

Вопрос № 125.874
Здравствуйте, уважаемые участники форума! У меня такая проблема: я пока не знаю MySql по этому хотел написать такой скрипт определяющую реферера посетителя:
<?php
$var = $_POST["refid"];
if ($var = "11111111")
{
$referrer = "Вася Пупкин";
}
if ($var = "22222222")
{
$referrer = "Иван Петрович";
}
else
{
$referrer = " ";
}

echo "Вас пригласил: $referrer"!
?>

Но каждый раз хоть ссылка выглядет так
http://mysite.ru/index.php?refid=11111111 или
http://mysite.ru/index.php?refid=22222222 или http://mysite.ru/
$referrer всегда имеет значение "Иван Петрович".
Подскажите пожалуйста, где я ошибся?
Отправлен: 04.03.2008, 01:02
Вопрос задал: Sherland (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Иван Сергеевич
Здравствуйте, Sherland!

Во-первых, при вводе приведенных вами URL параметр refid занесется в массив $_GET, а не $_POST. Можно также использовать массив $_REQUEST, в котором собраны оба вышеперечисленных массива.
Во вторых, тогда уж лучше сделать массив пользователей
$users = array ("11111"=>"Иван Иваныч", "22222"=>"Степан Петрович");
а далее :
if (array_key_exists($_GET["refid"], $users)) $referrer = $users[$_GET["refid"]];
else $referrer = "";

Так вам не придется перебирать всех зарегистрированных пользователей.
Ответ отправил: Иван Сергеевич (статус: 2-ой класс)
Ответ отправлен: 04.03.2008, 01:15
Оценка за ответ: 5
Комментарий оценки:
Спасибо Вы очень помогли!

Отвечает: Anti_SP
Здравствуйте, Sherland

В вашем варианте есть ошибка - когда вы проверяете значение $var то вместо сравнения(==) у вас стоит присваивание(=). Правильно будет:

<?php
$var = $_POST["refid"];
if ($var == "11111111")
{
$referrer = "Вася Пупкин";
}
elseif ($var == "22222222")
{
$referrer = "Иван Петрович";
}
else
{
$referrer = " ";
}

echo "Вас пригласил: $referrer"!
?>

Или испольуйте, как вариант, конструкцию switch()... case :

<?php
$var = $_POST["refid"];

switch ($var)
{
case "11111111" : $referrer = "Вася Пупкин"; break;
case "22222222" : $referrer = "Иван Петрович"; break
default : $referrer = " ";
};

echo "Вас пригласил: $referrer"!
?>

Приложение:

Ответ отправил: Anti_SP (статус: 1-ый класс)
Ответ отправлен: 04.03.2008, 01:46
Оценка за ответ: 5
Комментарий оценки:
Спасибо Вы очень помогли! Я использовал 2ой вариант!

Отвечает: magnifiko
Здравствуйте, Sherland!

В РНР операция сравнения выглядит так ==
А операция присваивания =

Т.е.,
$referrer = "Иван Петрович";
правильно

Но
if ($var = "22222222")
неправильно. В нём происходит присваивание.

Правильно вот как:
if ($var =="22222222")
Ответ отправил: magnifiko (статус: 1-ый класс)
Ответ отправлен: 04.03.2008, 11:58
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Я это заметил после отправки вопроса!


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.72.2 от 06.03.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное