Описание: Начинаю потихоньку знакомиться |
Поиск в теме | Версия для печати |
Валерий |
Отправлено: 14 Мая, 2005 - 17:06:23
|
Админ-3
Покинул форум
Сообщений всего: 2676
Дата рег-ции: Янв. 2005
Откуда: Беларусь
Карма 16
|
TvoyWeb
Задаю вопрос здесь, хотя может нужно и в другой теме.
Установил Денвер. Сейчас скачиваю гостевые, форумы и прочее и смотрю, любуюсь, выбираю, чтобы это себе поставить, настраиваю, дизы кручу.
Понравилась одна гостевая. Неплохо, есть возможности ответов, редактирования. Но - с базой данных. База у меня есть, я там даже таблицу уже создал.
Можно ли как-то обдурить денвер и сунуть ему вместо базы на сервере какую-нить самодеятельную на компе? |
|
|
Валерий |
Отправлено: 14 Мая, 2005 - 19:17:02
|
Админ-3
Покинул форум
Сообщений всего: 2676
Дата рег-ции: Янв. 2005
Откуда: Беларусь
Карма 16
|
TvoyWeb
Блин, в описании этого нету, я бы нашел...
Как просто, спасибо!
ну, а теперь я начинаю разбираться с РНР.
У меня не работает простой скрипт. Чую - там что-то не то.
ты меня Маркус, извини, я просто знать хочу - на то я думаю, или не на то.
Вот код
CODE:<?php
/////////////////////////////////////////////////////////////////////////
/////////////////////////////set the following///////////////////////////
/////////////////////////////////////////////////////////////////////////
$max = "900"; // sets the maximum amount of chars allowed per post.
$urpassword = "pass"; //set to your desired password.
/////////////////////////////////////////////////////////////////////////
$date_array = getdate();
$time = date("l, d M Y");
if ($x == "1") {
global $urpassword;
if ($password == $urpassword){
global $max;
if ( strlen($news) > 3 and strlen($news) <= $max){
global $news, $time;
$filename = "news.txt";
$fp = fopen( $filename, "w" ) or die ("no file opening is occuring"); //$fp is short for file pointer
flock($fp,1); //allows file reading but prevents writing
fwrite($fp," ");
rewind($fp); // re-sets file pointer to start of file.
$newsall = "<BR><font color='#000080'>$time:</font><BR>$news";
fwrite( $fp, $newsall); //writes the value of the counter to where filepointer is.
flock($fp,3); //releases file
print "<p align='left'>News data has been written to file:<BR>";
print "<b>$news</b> ";
print "<BR>Go <a href='javascript:history.back()' style='text-decoration: none'>[back]</a> and refresh page to view new changes.</p>";
} else if ($news == NULL){
print "<p align='left'>Please enter some news
<a href='javascript:history.back()' style='text-decoration: none'>[back]</a></p>";
} else {
print "<p align='left'><font size='2' face='Arial'>An error has occurred, news must be at least 4 chars and less than $max.</font></p>";
}
} else {
print "<b>$password</b> was not accepted as a password <a href='javascript:history.back()' style='text-decoration: none'>[back]</a><BR>";
}
}
?>
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Sunk Scripts: Simple News</title>
<style fprolloverstyle>A:hover {color: #000000}
</style>
</head>
<font face="Arial" size="2">Enter a small news bulletin and your password </font>
</html>
<font face="Arial" size="2">below</font><html><font face="Arial" size="2">: </font>
<font face="Arial" size="1">(<?php global $max; print $max; ?> chars max)</font><font face="Arial" size="2"><BR><BR>Date Stamp: <b><?php print $time; ?></b></font>
<body text="#000000" link="#000080" vlink="#000080" alink="#000080" style="font-family: Arial; font-size: 10pt">
<form method="POST" action=<?php print("$PHP_SELF"); ?>>
<p>
<textarea rows="9" name="news" cols="38" style="border-style: solid; border-width: 1"></textarea><BR>
<input type="password" name="password" size="20" style="border-style: solid; border-width: 1"> <input type="hidden" name="x" size="1" value="1">
<input type="submit" value="Submit" name="B1" style="font-family: Arial; font-size: 10px; background-color: #FFFFFF"><input type="reset" value="Reset" name="B2" style="font-family: Arial; font-size: 10px; background-color: #FFFFFF"></p>
</form>
</body></html>
<b>Current Headline:</b><BR><?php include("news.txt");?>
<p align="center">
<a target="_top" style="text-decoration: none" href="http://www.sunkmedia.co.uk/scripts.htm">[sunk scripts]</a></p>
</body>
Что не работет? данные не заносятся при вводе в файл вот это
CODE:<?php include("news.txt");?>
дальше: не понимаю, какого рожна здесь эта переменная, если она нигде не упоминается, и на странице выскакивает ошибка именно на этой строчке
дальше: разве правильно написано отправка данных из формы? Здесь нужно указывать страницу, так? Но если данные из этой же страницы, то тогда - переменную (или функцию?). А здесь для меня очень непонятно.
CODE:<form method="POST" action=<?php print("$PHP_SELF"); ?>>
Кстати, копировал все из оригинала - отсебятины нету, хотя вот это >> мне не понятно, и вот это == в 11 строке - тоже.
В общем, я решил учиться так: смотреть и думать. |
|
|
Иб-Тать |
Отправлено: 14 Мая, 2005 - 20:48:03
|
Junior Member
Покинул форум
Сообщений всего: 54
Дата рег-ции: Апр. 2005
Карма 0
|
Валерий
По поводу переменной x - у тебя в форме есть скрытое поле
CODE:<input type="hidden" name="x" size="1" value="1">
в результате, когда ты нажмешь кнопку в форме все ее поля будут переданы в виде переменных и соответственно скрипт получит переменную х=1
И начнет проверять значение пароля, логина и все остальное.
А выскакивает не ошибка а замечание - это не страшно, можно отключить вывод замечаний
CODE:<form method="POST" action=<?php print("$PHP_SELF"); ?>>
не знаю нафиг там print... по идее если без print, то эта строка означала бы "передать все значения из формы в этот же самый файл в виде переменных"
для пояснения поставлю пробел
CODE:<form method="POST" action=<?php print("$PHP_SELF"); ?> >
то есть ?> - это заканчивается ПХП а затем закрывается ХТМЛ тег >
а вот про print сам бы с удовольстием объяснение послушал
С Register globals=off (см ниже) вместо нужно писать
CODE:$_SERVER['php_self']
почему не работает - возможно у тебя Register globals=off в php.ini
http://detail.phpclub.net/article/globals
В этом нет ничего страшного, просто придется немного переписать скрипт.
например, вместо пресловутого
нужно писать
CODE: if ($_POST['x'] == "1") { и т.д.
(Добавление)
Валерий
Вот рабочий вариант: (походу оказалось, что flock глючит, слышал, что такое под виндами может быть, но до того не сталкивался)
CODE:<?php
$max = "900"; // sets the maximum amount of chars allowed per post.
$urpassword = "pass"; //set to your desired password.
$date_array = getdate();
$time = date("l, d M Y");
$news=$_POST['news'];
if ($_POST['x'] == "1") {
global $urpassword;
if ($_POST['password'] == $urpassword){
global $max;
if ( strlen($news) > 3 and strlen($news) <= $max){
global $news, $time;
$filename = "news.txt";
$fp = fopen( $filename, "w" ) or die ("no file opening is occuring"); //$fp is short for file pointer
# flock($fp,1); //allows file reading but prevents writing
fwrite($fp," ");
rewind($fp); // re-sets file pointer to start of file.
$newsall = "<BR><font color='#000080'>$time:</font><BR>$news";
fwrite( $fp, $newsall); //writes the value of the counter to where filepointer is.
# flock($fp,3); //releases file
print "<p align='left'>News data has been written to file:<BR>";
print "<b>$news</b> ";
print "<BR>Go <a href='javascript:history.back()' style='text-decoration: none'>[back]</a> and refresh page to view new changes.</p>";
} else if ($news == NULL){
print "<p align='left'>Please enter some news
<a href='javascript:history.back()' style='text-decoration: none'>[back]</a></p>";
} else {
print "<p align='left'><font size='2' face='Arial'>An error has occurred, news must be at least 4 chars and less than $max.</font></p>";
}
} else {
print "<b>$password</b> was not accepted as a password <a href='javascript:history.back()' style='text-decoration: none'>[back]</a><BR>";
}
}
?>
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Sunk Scripts: Simple News</title>
<style fprolloverstyle>A:hover {color: #000000}
</style>
</head>
<font face="Arial" size="2">Enter a small news bulletin and your password </font>
</html>
<font face="Arial" size="2">below</font><html><font face="Arial" size="2">: </font>
<font face="Arial" size="1">(<?php global $max; print $max; ?> chars max)</font><font face="Arial" size="2"><BR><BR>Date Stamp: <b><?php print $time; ?></b></font>
<body text="#000000" link="#000080" vlink="#000080" alink="#000080" style="font-family: Arial; font-size: 10pt">
<form method="POST" action=<?php print($_SERVER["PHP_SELF"]); ?>>
<p>
<textarea rows="9" name="news" cols="38" style="border-style: solid; border-width: 1"></textarea><BR>
<input type="password" name="password" size="20" style="border-style: solid; border-width: 1"> <input type="hidden" name="x" size="1" value="1">
<input type="submit" value="Submit" name="B1" style="font-family: Arial; font-size: 10px; background-color: #FFFFFF"><input type="reset" value="Reset" name="B2" style="font-family: Arial; font-size: 10px; background-color: #FFFFFF"></p>
</form>
</body></html>
<b>Current Headline:</b><BR><?php include("news.txt");?>
<p align="center">
<a target="_top" style="text-decoration: none" href="http://www.sunkmedia.co.uk/scripts.htm">[sunk scripts]</a></p>
</body>
файл news.txt нужно создать самому.
нафиг туда столько Global понатыкано, так и не понял
а насчет print допер - он нужен для того, чтобы она в ХТМЛ якобы "напечатала" адрес текущей страницы... но я бы совсем иначе это дело написал
ПС За скрипт спасибо - сам хотел нечто подобное написать, чтоб бегущую строку на сайте обновлять проще было. Запарило на ФТП лазить напостоянке. |
|
|
Валерий |
Отправлено: 15 Мая, 2005 - 04:43:38
|
Админ-3
Покинул форум
Сообщений всего: 2676
Дата рег-ции: Янв. 2005
Откуда: Беларусь
Карма 16
|
TvoyWeb
Иб-Тать
Спасибо! есть пища для ума.
Так, теперича опять. С вопросами.
Если я в Денвере создаю базу и таблицу. Количество и наименование полей (хотя бы вот для такого скрипта, если бы он с базой работал) откуда берутся?
То есть: есть имя, мейл, город, сам текст. Значит, нужно и четыре поля? и соответственно- все это аккуратно прописывать в коде?
Еще: Мамба создает сама при установке на локалке базу, или предварительно нужно базу создать, а ей прописывать готовые имя, пароль и подобное.
И на каком хосте должна быть сама база? localhost или test.ru1? |
|
|
Валерий |
Отправлено: 15 Мая, 2005 - 06:11:27
|
Админ-3
Покинул форум
Сообщений всего: 2676
Дата рег-ции: Янв. 2005
Откуда: Беларусь
Карма 16
|
TvoyWeb пишет:Любой скрипт использующий базу имеет файл для создания таблиц
Понял.
Я тут сейчас крутил (Денвер же работает, как не покрутить), что скрипты не просят таблиц и полей.
Им нужна только база.
Мамбу посмотрел - пока не возьмусь. Недопонимаю сути ее.
Она у меня все создала, правда войти в админку не смог - там нужно выставлять права. В локалке пока не знаю, как это сделать. По идее - нужно устанавливать серверное соединение В Тотал Командаре и заходить через него на локальный хост. Правильно мыслию?
(Добавление)
TvoyWeb
Наглею, наверное, но...
Опрос использует базу. Посредством inklud страничку опроса ставлю на страницу, все работает. Но - вывод результата - на новой странице.
А хочется, чтоб было здесь же, внизу.
Вот кусок кода, откуда, как мне кажется, начинается вывод
CODE:mysql_query("INSERT INTO ip VALUES ('', '$ip', '$ids')") or die("Ошибка при изменении");
}
Header("Location:voit.php?go=results&id=$ids");
}
if ($go=="results") {
echo "Результаты опроса ";
$result=mysql_query("SELECT * FROM allvoits WHERE id='$id'");
while ($row = mysql_fetch_array($result, MYSQL_NUM))
{
$name=$row[1];
}
$result=mysql_query("SELECT * FROM voit WHERE idvoit='$id' order by id desc");
$count=0;
echo "\"$name\"";
while ($row = mysql_fetch_array($result, MYSQL_NUM))
{
$count+=$row[2];
}
$colvo=mysql_num_rows($result);
$results=mysql_query("SELECT * FROM voit WHERE idvoit='$id' order by golos desc");
$collor="668745";
while ($row = mysql_fetch_array($results, MYSQL_NUM))
{
$col1=$row[2];
$proc=(100/$count)*$col1;
$proc2=100-$proc;
echo "<table cellpadding=0 cellspacing=0 border=0 width=100%>
Есть ведь, наверное, возможность изменить это дело? |
|
|
|
Поиск в теме | Версия для печати |
Страниц (3): [1] 2 3 » |
Сейчас эту тему просматривают: 4 (гостей: 4, зарегистрированных: 0, скрытых: 0) |
« PHP/Perl » |
Все гости форума могут просматривать этот раздел. Только администраторы и модераторы могут создавать новые темы в этом разделе. Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
|
|
|