Статьи

Dr Design — JavaScript для PHP

Зал ожидания полон! Но сейчас он закатывает рукава и протягивает руку помощи сегодняшним пациентам …

Dream Rollovers

Здравствуй!
Можете ли вы сказать мне, почему все ролловеры, которые я делаю в Dreamweaver, не работают в Mac Explorer v.5? Есть ли способ заставить их работать? Огромное спасибо…
Амандо из Мехико.

Амандо, я не смотрел на Javascript ролловера Dreamweaver. Иногда проще, тем лучше. Мне очень нравится простой переносимый Javascript Энди Мэтьюса (Gravity Digital), который он выложил некоторое время назад на форумах SitePoint. Возможно, вам повезет больше с этим.

<script language="javascript"> 
<!--

// Pre-load images
if (document.images) {
 image1on = new Image();
 image1on.src = "images/about_us_on.gif";
 image1off = new Image();
 image1off.src = "images/about_us_off.gif";
}

function changeImages() {
 if (document.images) {
   for (var i=0; i<changeImages.arguments.length; i+=2) {
     document[changeImages.arguments[i]].src =  
     eval(changeImages.arguments[i+1] + ".src");
   }
 }
}

// -->
</script>

Вот пример его использования в HTML:

 <a href="about_us.shtml" onmouseover="changeImages('image1',  
'image1on')" onmouseout="changeImages('image1', 'image1off')">
<img name="image1" src="images/about_us_off.gif" border=0></a>
Отслеживание родственников

Эй док,
Я разработал и настроил небольшой сайт исключительно для семейных фотографий. Я использую серверное программное обеспечение Apache на домашнем ПК.

Мой вопрос: как я могу отслеживать людей, которые приходят на сайт? Я установил имя пользователя и пароль, которые должны ограничивать доступ … однако, когда в семье обходит слух, я уверен, что получу много обращений от дальних родственников, и, учитывая, что мне любопытно человек, которого я хотел бы знать, кто входит в систему

Я установил одно имя пользователя и пароль, чтобы не различать пользователей таким образом … Я также с помощью HTML-кода настроил экран для запроса имени, а затем поместил файл cookie на ПК пользователя, поэтому что они знают, как часто они были на сайте (и, в конце концов, могут видеть, есть ли какие-либо обновления на сайте).
Gary

Гэри, я знаю, откуда ты. Нет ничего более забавного, чем не отставать от семейных сплетен и выяснить, чем занимаются родственники. Я бы, вероятно, выбрал немного сценариев на стороне сервера в PHP или ASP для этого. Тем не менее, вы не можете использовать какие-либо сценарии на стороне сервера, поэтому давайте посмотрим, сможем ли мы разработать гениальный план для мониторинга посетителей со стороны клиента с помощью Javascript!

Техника, которую я буду использовать, предполагает, что у вас есть инструмент анализа веб-журналов, или вы настоящий фанат и читаете файлы журналов. Проверьте этот список доступных инструментов анализа журнала . Популярные пакеты, которые работают на серверах Linux, включают Webalizer, Analog и AWStats. Вы также найдете программы анализа журналов, которые будут работать под Windows.

Теперь для удовольствия …

Техника немного «острая». Некоторые люди, известные как «шпионские программы в формате gif» или «веб-маяк», возмущаются, что интернет-рекламодатели используют эту технику для отслеживания посетителей. Но это именно то, чего мы хотим достичь. Если вы используете коммерческий веб-сайт и используете этот метод, было бы целесообразно (и в соответствии с этикой конфиденциальности в Интернете) раскрыть в своей политике конфиденциальности, что вы отслеживаете посетителей с помощью файлов cookie.

«Веб-маяк» использует Javascript для добавления строки запроса к адресу чистого (прозрачного 1 × 1 пикселя) GIF-файла, который загружается в веб-страницу. Строка запроса будет игнорироваться веб-сервером, когда он отправляет отчет в формате gif, за исключением того, что запрос HTTP GET будет зарегистрирован в журналах доступа к вашему веб-сайту. Когда вы проанализируете свои журналы, вы сможете отслеживать своих посетителей по запросам на прозрачный GIF. Например, у вас будут записи, такие как:

 [10/Oct/2002:03:16:42 +0000] "GET /clear.gif?name=Mary HTTP/1.1"

Вот код для страницы, которая отслеживает любого «приготовленного» посетителя через функцию setGif()

 <html> 
<head>
<script language = "javascript">

// set the cookie expiry date to be in twelve months
expireDate = new Date;
expireDate.setMonth(expireDate.getMonth() + 12);

// convert the expiry date to GMT format
cookieDate = expireDate.toGMTString();

// declare userName as global
var userName = "";

// setCookie() sets a cookie with the userName
// submitted by the form userForm
function setCookie() {
 userName = document.userForm.name.value;  
 cookieString = "userName=" + userName + "; expires=" +  
 cookieDate + ";";
 document.cookie = cookieString;
 alert('Welcome ' + userName + '!');

 // call function setGif() so that we track this visitor's page view
 // now that we know their name!
 setGif();
 return false;
}

// setGif() will embed the clear gif into the document
// and append the cookied userName so that we can track
// the user in our website access log.
function setGif() {
 if(document.cookie != "") {
   userName = document.cookie.split("=")[1];
   imageTag = '<img src="clear.gif?name=' + userName + '" width=1  
   height=1>';
   document.write(imageTag);
 }
}

</script>
</head>

<body>
<form name = "userForm">
Select a username:
<input type=text name="name" onBlur="return setCookie()">
<input type="submit" value="submit" onClick="return setCookie()">
</form>

<script language="javascript">
 setGif();
</script>
</body>
</html>

Переменное назначение блюза

Здравствуйте доктор,
У меня к тебе быстрый вопрос. Я новичок в программировании PHP и быстро застрял. После подключения к базе данных MySQL через PHP я использую следующий код PHP для вставки строк в существующую таблицу…

   // If an artist has been submitted,  
   // add them to the database.  
   if ($addArtist == "Add") {  
     $sql = "INSERT INTO Artists SET  
     Name='$AddName',  
     bio='$AddBio';";  
     if (@mysql_query($sql)) {  
       echo("Artist Added");  
     } else {  
       echo("<p>Error adding submitted order: " .  
            mysql_error() . "</p>");  
 
     }  
   }

Однако мне нужно также добавить строки в другую таблицу в той же базе данных одновременно. У меня не было успеха с его добавлением таким образом (распознается только один SQL-оператор, но не оба)…

     // If an artist has been submitted,  
   // add it them the database.  
   if ($addArtist == "Add") {  
     $sql = "INSERT INTO Artists SET  
     Name='$AddName',  
     bio='$AddBio'";  
     $sql = "INSERT INTO Pictures SET  
     fileSRC='$AddPicture'";  
     if (@mysql_query($sql)) {  
       echo("Artist Added");  
     } else {  
       echo("<p>Error adding submitted order: " .  
            mysql_error() . "</p>");  
     }  
   }

Я искал везде и не нашел решения. Пожалуйста, дайте мне знать, если вы можете помочь.
Спасибо,
Дэвид

Дэвид, мне всегда очень приятно слышать, как кто-то находит путь к просветлению и мудрости с открытым исходным кодом. Вы станете мастером PHP в кратчайшие сроки!

Вот проблема с вашим вторым примером кода. Когда вы присваиваете свою вторую строку запроса переменной $ sql, это «перезапишет» предыдущее значение переменной, которое является первой заданной вами строкой запроса. Вот пример:

 $myString = "foo";  
$myString = "bar";  
echo $myString;

Это выведет:
bar

Однако, если я напишу:
$myString = "foo";  
echo $myString;  
echo '<br>';  
$myString = "bar";  
echo $myString;

Это выведет:
foo  
bar

Вернувшись в свой код, вы можете попробовать что-то вроде этого:

 if ($addArtist == "Add") {  
 
  // first insert the record into Artists  
  $sql = "INSERT INTO Artists SET  
       Name='$AddName',  
       bio='$AddBio'";  
 
  if (@mysql_query($sql)) {  
     echo("Artist Added");  
  } else {  
     echo("<p>Error adding submitted order: " .  
           mysql_error() . "</p>");  
  }  
       
  // next insert the record to Pictures  
  $sql = "INSERT INTO Pictures SET  
      fileSRC='$AddPicture'";  
 
  if (@mysql_query($sql)) {  
     echo("Picture Added");  
  } else {  
     echo("<p>Error adding submitted order: " .  
            mysql_error() . "</p>");  
  }        
}

Это должно сделать это!

Ориентация на фрейм

Доктор,
В наборе фреймов я создал ссылку на страницу, которая должна загружаться в другом фрейме. Ссылка идет от "frame3", и связанная страница должна появиться в "frame2" - но это не так !!!!!!

Что бы я ни указывал в атрибуте «target», страница все равно отображается в «frame3», таким образом, удаляя мою панель навигации. Я попытался _top, _parent, default, _blank и т. Д. В поле "TARGET". Ничто не похоже на работу. Помогите!!!
© Рене

Рене, я чувствую некоторое разочарование от твоего использования восклицательных знаков. Иногда, как бы отчаянно я ни пытался закончить какое-то кодирование, когда мне хочется ударить головой о монитор, я знаю, что пришло время ослабить кофеин и выйти на улицу, заново открыть, что такое солнечный свет, и зарядиться витамином D.

Если вы хотите нацелить кадр из другого кадра, вам нужно использовать имя целевого кадра. Допустим, у нас есть следующий набор фреймов:

 <frameset rows="50%,*">   
 <frame name="frame1" src="navigation.html">  
 <frame name="frame2" src="body.html">  
</frameset>

И навигация. Html (который загружен в frame1) имеет следующую ссылку, которая откроется в frame2:

 <a href="somepage.html" target="frame2">click here    
to open the page inside frame2.</a>

Виола!

Свет, камера, мотор!

Док, я разработал несколько действительно привлекательных кнопок прокрутки / навигации для моего сайта на Swish и экспортировал их как файлы .swf (flash). Я просто не могу заставить мой редактор HTML (Homesite 4.5) вызвать их 🙁 Я подумал:

 <a href "main.html">img src"img/main.swf" width="200"    
height="32" alt"" border="0"></a><br>

сделал бы это, но не повезло. Теперь я вернулся к скучным старым .jpgs
Спасибо за любой совет,
Райан

Ай-ай! Этот якорный тег очень изуродован. Помните, что тег всегда принимает эту форму:

 <tagType attribute=value attribute2=value2 attribute3=value3>

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

 <img src="myImage.jgp" width=100 height=100 border=0 alt="Just an image">

Во всяком случае, это на самом деле не приближает нас к решению проблемы. Я рад признать, что я вне моей лиги в этом. Возможно, вы захотите посмотреть на добавление действий в ваши фильмы Swish. Вот учебник, который выглядит многообещающим - удачи! И не забудьте спросить на форумах SitePoint, если вам нужен быстрый совет от некоторых довольно удобных пользователей Swish.

Включая верхние и нижние колонтитулы


Как включить верхний и нижний колонтитулы в HTML-страницу?
Благодарность,
Winston

Большинство веб-серверов поддерживают включение на стороне сервера (SSI). Чтобы иметь возможность использовать SSI на html-странице, необходимо использовать расширение файла .shtml на своих веб-страницах, чтобы веб-сервер знал, что нужно проанализировать файл и обработать директивы include. Вот пример использования SSI для включения верхнего и нижнего колонтитула из разных файлов:

 <!--#include file="header.html" -->   
<p>Some regular old HTML goes here.</p>  
<!--#include file="footer.html" -->

Не забудьте сохранить страницу с расширением .shtml! Вы также можете использовать директивы включения SSI в ваших ASP-файлах. Что напоминает мне, я видел пациента в клинике два месяца назад с аналогичным случаем включает. Вы можете прочитать совет, который я дал тогда - надеюсь, это поможет.

Часы консультации истекли, но убедитесь, что на ваши вопросы ответят, когда операция снова откроется в следующем месяце!