С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.07.2012
Сообщений: 151

Добыча из URL

24.07.2012, 17:39. Показов 1448. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня url такого вида http://saitotot.com/page.php/id1.

Как мне добыть цифру 1 или которая там .

Вот такое не выходит
PHP
1
2
3
if (isset($_GET['id'])) {$id =$_GET['id']; } 
else
{ exit("Вы зашил на страницу без параметра!");}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.07.2012, 17:39
Ответы с готовыми решениями:

Открыть URL (там ссылка, которая совершает переход на другой URL) и вытянуть новый URL
Стоит задача по одному URL получить другой Пробовал открывать URL через webbrowser, но это не совсем то, что нужно, в идеале вообще не...

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

Динамическое создание текстблока и добыча его содержимого
Всем привет. Я программно создаю TextBlock, мне надо узнать его "id" при клике, тк в будущем надо будет работать с этим. Я добавил...

14
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.07.2012, 17:41
http://saitotot.com/page.php/id=1.
0
0 / 0 / 0
Регистрация: 21.07.2012
Сообщений: 151
24.07.2012, 18:15  [ТС]
А мне нужно что бы брало из id1
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.07.2012, 18:26
fastconnekt, почитайте по mod_rewrite. Может вам это нужно...
0
0 / 0 / 0
Регистрация: 21.07.2012
Сообщений: 151
24.07.2012, 18:29  [ТС]
нет мне нужно что бы из id1 брало цифру.


(обработчик был в php)
0
4 / 4 / 0
Регистрация: 23.07.2012
Сообщений: 27
24.07.2012, 19:39
PHP
1
2
3
4
5
if(isset($_GET['id']))
{
   for($i=2; $<count($_GET['id']); $i++)
      $string .= $_GET['id'][i];
}
как то так.. не проверено

ну и потом (int)$string соответсвенно
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.07.2012, 20:16
fastconnekt, можно с помощью регулярки:
PHP
1
2
3
4
5
6
7
8
// Строка запроса
$URI = $_SERVER['REQUEST_URI'];
 
// Ищем вхождения. "$match[1]" будет содержать нужный нам ID
preg_match("/\/id([0-9]+)$/i", $URI, $match);
 
// Выводим для примера
echo $match[1];
0
0 / 0 / 0
Регистрация: 21.07.2012
Сообщений: 151
24.07.2012, 20:58  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
 
session_start()
$URI = $_SERVER['REQUEST_URI'];
 
if (!preg_match("/\/id([0-9]+)$/i", $URI, $match)) {
 exit("Вы зашли без параметра");
}
 
$match[1] = $id;
include ("bd.php");
 
if (!preg_match("|^[\d]+$|", $id)) {
exit("<p>Неверный формат запроса! Проверьте URL</p>");//если id не число, то выдаем ошибку
}


Добавлено через 1 минуту
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?php
 
session_start()
$URI = $_SERVER['REQUEST_URI'];
 
if (!preg_match("/\/id([0-9]+)$/i", $URI, $match)) {
 exit("Вы зашли без параметра");
}
 
$match[1] = $id;
include ("bd.php");
 
if (!preg_match("|^[\d]+$|", $id)) {
exit("<p>Неверный формат запроса! Проверьте URL</p>");//если id не число, то выдаем ошибку
}
 
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
 
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db); 
$myrow2 = mysql_fetch_array($result2); 
if (empty($myrow2['id']))
   {
   //Если не действительны (может мы удалили этого пользователя из базы за плохое поведение)
    exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
   }
}
else {
//Проверяем, зарегистрирован ли вошедший
exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); }
$result = mysql_query("SELECT * FROM users WHERE id='$id'",$db); 
$myrow = mysql_fetch_array($result);//Извлекаем все данные пользователя с данным id
 
if (empty($myrow['login'])) { exit("Пользователя не существует! Возможно он был удален.");} //если такого не существует
 
?>
<html>
<head>
<title><?php echo $myrow['login']; ?></title>
</head>
<body>
<h2>Пользователь "<?php echo $myrow['login']; ?>"</h2>
 
 
<?php
print <<<HERE
|<a href='page.php?id=$myrow2[id]'>Моя страница</a>|<a href='index.php'>Главная страница</a>|<a href='all_users.php'>Список пользователей</a>|<a href='exit.php'>Выход</a><br><br>
HERE;
//выше вывели меню
 
if ($myrow['login'] == $login) {
//Если страничка принадлежит вошедшему, то предлагаем изменить данные и выводим личные сообщения
 
print <<<HERE
 
<form action='update_user.php' method='post'>
Ваш логин <strong>$myrow[login]</strong>. Изменить логин:<br>
<input name='login' type='text'>
<input type='submit' name='submit' value='изменить'>
</form>
<br>
 
<form action='update_user.php' method='post'>
Изменить пароль:<br>
<input name='password' type='password'>
<input type='submit' name='submit' value='изменить'>
</form>
<br>
 
<form action='update_user.php' method='post' enctype='multipart/form-data'>
Ваш аватар:<br>
<img alt='аватар' src='$myrow[avatar]'><br>
Изображение должно быть формата jpg, gif или png. Изменить аватар:<br>
<input type="FILE" name="fupload">
<input type='submit' name='submit' value='изменить'>
</form>
<br>
 
<h2>Личные сообщения:</h2>
 
HERE;
 
$tmp = mysql_query("SELECT * FROM messages WHERE poluchatel='$login' ORDER BY id DESC",$db); 
$messages = mysql_fetch_array($tmp);//извлекаем сообщения пользователя, сортируем по идентификатору в обратном порядке, т.е. самые новые сообщения будут вверху
 
if (!empty($messages['id'])) {
do //выводим все сообщения в цикле
  {
$author = $messages['author'];
$result4 = mysql_query("SELECT avatar,id FROM users WHERE login='$author'",$db); //извлекаем аватар автора
$myrow4 = mysql_fetch_array($result4);
 
if (!empty($myrow4['avatar'])) {//если такового нет, то выводим стандартный(может этого пользователя уже давно удалили)
$avatar = $myrow4['avatar'];
}
else {$avatar = "avatars/net-avatara.jpg";}
 
  printf("
  <table>
  <tr>
  <td><a href='page.php?id=%s'><img alt='аватар' src='%s'></a></td>
  
  <td>Автор: <a href='page.php?id=%s'>%s</a><br>
      Дата: %s<br>
      Сообщение:<br>
     %s<br>
     <a href='drop_post.php?id=%s'>Удалить</a>
  
  </td>  
  </tr>
  </table><br>
  ",$myrow4['id'],$avatar,$myrow4['id'],$author,$messages['date'],$messages['text'],$messages['id']);
  //выводим само сообщение
  }
  while($messages = mysql_fetch_array($tmp));
 
                    }
                    else {
                    //если сообщений не найдено
                    echo "Сообщений нет";
                    }
                    
}
 
else
{
//если страничка чужая, то выводим только некторые данные и форму для отправки личных сообщений
 
print <<<HERE
<img alt='аватар' src='$myrow[avatar]'><br>
<form action='post.php' method='post'>
<br>
<h2>Отправить Ваше сообщение:</h2>
<textarea cols='43' rows='4' name='text'></textarea><br>
<input type='hidden' name='poluchatel' value='$myrow[login]'>
<input type='hidden' name='id' value='$myrow[id]'>
<input type='submit' name='submit' value='Отправить'>
</form>
HERE;
}
 
?>
</body>
</html>
Ошибка вот такая Parse error: syntax error, unexpected T_VARIABLE in /home/u645784546/public_html/page.php on line 4
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.07.2012, 21:16
Цитата Сообщение от fastconnekt Посмотреть сообщение
session_start()
точку с запятой поставь в конце строки, это не js

Добавлено через 1 минуту
и скрипт, мягко говоря, хромает.
Цитата Сообщение от fastconnekt Посмотреть сообщение
PHP
1
2
3
4
5
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
из уроков попова штоле это взяли?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.07.2012, 21:19
fastconnekt, после session_start поставьте точку с запятой.
P.S. Внимательней нужно быть
0
0 / 0 / 0
Регистрация: 21.07.2012
Сообщений: 151
24.07.2012, 21:23  [ТС]
Спасибо Да Попов
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.07.2012, 21:33
не доверяйте никогда данным, которые могут подделать - ни кукам, ни переданным данным, не сессиям - перед запросом всегда проверяйте их
вот вам простой пример - вы делаете простенькую авторизацию по урокам попова и ему подобных
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
session_start();
if(isset($_POST['btn'])) {
$login = $_POST['login'];
$pass = $_POST['pass'];
// не проверив данные, выполняем запрос
$res = mysql_query("SELECT `id`,`login` FROM `users` Where `login`='$login' and `pass`='$pass'"); /*так же ведь, да? */
if(mysql_num_rows($res)) {
$_SESSION['login']=$login; // все ок да?
echo "Вы успешно зашли, поздравляю";
}
}
?>
HTML5
1
2
3
4
5
<form method="post">
Login<input type=text name=login /><br>
Pass<input type=password name=pass /><br>
<input type=submit name=btn value="Войти" />
</form>
если вы не проверяя данные (как в вашем коде) будете делать запрос к БД - то при наличии небольших знаний - я не зная ни пароля ни логина спокойно зайду к вам на сайт
0
0 / 0 / 0
Регистрация: 21.07.2012
Сообщений: 151
24.07.2012, 21:54  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
 
session_start();
$URI = $_SERVER['REQUEST_URI'];
 
if (!preg_match("/\/id([0-9]+)$/i", $URI, $match)) {
 exit("Вы зашли без параметра");
}
 
$match[1] = $id;
include ("bd.php");
 
 
 
if (!empty($_SESSION['email']) and !empty($_SESSION['password']))
{
 
$email = $_SESSION['email'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT * FROM akks WHERE email='$email' AND password='$password' AND activation='1'",$db); 
$myrow2 = mysql_fetch_array($result2); 
if (empty($myrow2['id']))
   {
   //Если не действительны (может мы удалили этого пользователя из базы за плохое поведение)
    exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
   }
}
else {
//Проверяем, зарегистрирован ли вошедший
exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); }
$result = mysql_query("SELECT * FROM akks WHERE id='$id'",$db); 
$myrow = mysql_fetch_array($result);//Извлекаем все данные пользователя с данным id
 
if (empty($myrow['email'])) { exit("Пользователя не существует! Возможно он был удален.");} //если такого не существует
 
?>
Пишет Пользователя не существует! Возможно он был удален.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.07.2012, 22:00
значит в таблице под этим номером id не указано мыло

Добавлено через 2 минуты
вместо вот этого
Цитата Сообщение от fastconnekt Посмотреть сообщение
PHP
1
2
$result = mysql_query("SELECT * FROM akks WHERE id='$id'",$db); 
$myrow = mysql_fetch_array($result);//Извлекаем все данные пользователя с данным id
пропишите
PHP
1
2
$result = "SELECT * FROM akks WHERE id='$id'",$db; 
var_dump($result);
и посмотрите какой запрос уходит в базу

Добавлено через 36 секунд
или просто id выведите перед запросом..
0
0 / 0 / 0
Регистрация: 21.07.2012
Сообщений: 151
24.07.2012, 22:02  [ТС]
Мыло вообщето есть
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.07.2012, 22:02
Помогаю со студенческими работами здесь

База данных с++ "Добыча угля" (Отчет по практике)
Доброго времени суток! Люди помогите создать базу данных по добыче угля,производственная практика уже заканчивается а программы нет(незнаю...

"Добыча" пароля через ассемблер. Как?
Приветствую всех. Недавно наткнулся на одну игру. Решил рипнуть текстуры - ан нет. Файлы .pak(которые на самом деле переименованные .zip),...

Как из asp получить полный URL и часть URL от вопросительного знака?
Господа подскажите как из asp получить полный URL и часть URL от вопросительного знака. На Javascript это сделать очень просто - ...

Сколько можно добавить URL адресов в свою созданную Группу URl?
Добрый день. Подскажите пожалуйста, сколько можно добавить URL адресов в свою созданную Группу URl? На купленной лицензии VS...

Как исправить: Изменил URL, но в адресных строках отображаются станые URL
Раньше были такого вида http://selftrips.ru/2013/01/07/27269 переделал на ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru