Перейти к содержимому

Сервис обмена электронных валют

Выбрать шаблон и создать сайт

Вопросы от новичка, что изучает PHP

#1 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 21 Февраль 2009 - 20:05

Начал изучать PHP, но вот иногда возникают вопросы, так что я буду вам сюда писать, а вы, если не тяжело, будете говорить в чем проблема. ;)

Первый впорос. Тема в книге: "РНР-сценатрии в теле HTML-документов"

Вот код который я напечатал
<html><body>
<? if ($REMOTE_ADDR=="172.0.0.1") { ?>
<h1>Добро пожаловать домой!</h1>
<? else { ?>
<h1>Привет, гость!</h1>
<? } ?>
</html></body>

Думаю понятно что здесь должно выводить. Но у меня пишет что еррор синтаксеса, в чем ошибка?

Parse error: syntax error, unexpected T_ELSE in Z:\home\localhost\www\admin\1.php on line 4


 

 

  • 0


#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 21 Февраль 2009 - 21:09

1) Ошибка в использовании глобальных переменных, это тебе на будущее. Почитай про register_globals = On, на форуме по-моему даже кому-то объяснял в чём разница и какие отсюда проблемы. Хотя я объясню вкратце.
Директива register_globals определяет видимость глобальных переменных в программе. На самом деле в PHP есть суперглобальные массивы.
$_SERVER - информация сервера и обращений
$_POST - передаваемые POST данные
$_GET - передаваемые GET данные
$_COOKIE - массив с куками(печеньем, пока не замораачивайся)
$_SESSION - массив сессий
$_FILES - HTTP загружаемые файлы
$_REQUEST - Данные HTTP-запроса
И таких много
Подробнее тут http://www.php.net/m...d.variables.php

Так вот... При register_globals = On к элементам суперглобальных переменных обращаться не через массив с ключём, а к примеру так
// было
$_SERVER['REMOTE_ADDR'];
// стало с register_globals = On
$REMOTE_ADDR;
То есть имя переменной принимает название ключа.

К чему же это приводит:
Вот представим что ты на странице создал переменную $name, а также на эту страницу поступают GET-переменные, название одной из которых name. В случае register_globals = On твоя переменная $name заменится пременной GET массива, так как доступ при таком подходе к нашей GET-переменной также $name
А вот при register_globals = Off у тебя есть 2 различные переменные, $name и $_GET['name'], которые имеют именно такое обращение и никак иначе.

2) Теперь по поводу твоей синтаксической ошибки, советую внимательнее читать выдаваемые предупреждения, там даже указывается какого типа ошибка и в какой строке.
Посмотри внимательнее что ты не сделал в этой строке
<? else { ?>

  • 0

#3 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 21 Февраль 2009 - 21:13

И ещё одно отчуждение... В следующий раз создавай отдельную тему под каждый свой вопрос, так будет корректнее. Не надо всё спихивать в одну тему, мы не сделаем на этом FAQ.
  • 0

#4 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 22 Февраль 2009 - 12:33

Ок :D
Я про масив $REMOTE_ADDR пока ещё ничего не спрашивал, просто пример был в книге :D
А вот то что я допустил ошибку, я уже понял, так надо:
<? } else { ?>
:D:

Мне легче написать все в пехепе, через echo ;)
Но уже это тоже понял :D

Есть небольшой вопрос, ради него не хочу создавать тему.
Какие это символы на клаве, ато я не могу определится :(

Прикрепленные изображения

  • znaki.jpg

  • 0


#5 Bender

Bender
  • Пользователь
  • 712 сообщений
  • Репутация: 0

Отправлено 22 Февраль 2009 - 12:37

вроде одинарные кавычки ' (в английском раскладе буква э)
  • 0

#6 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 22 Февраль 2009 - 13:17

Не, видишь, они разные...
Напишите плс типа так:
зеленное - (такието кавычки), ctrl + є
голубое - (такието кавычки), ё
  • 0


#7 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 23 Февраль 2009 - 14:42

Апостроф
Синие - апострофы, Зелёные возможно либо теже апострофы, либо обратные кавычки(Кнопка Ё)

Я так понял тут имеется ввиду про синие апострофы, походу объяснение идёт про разницу между
<?php
$name = "Вася"; 
echo "Ты $name"; // Ты Вася
echo 'Ты $name'; // Ты $name
?>
Разницу я думаю понял? Апострофы в отличие от двойных ковычек не принимает во внимание переменные.
  • 0


Оформление форума – IPBSkins.ru