
03.09.2009, 20:57
|
|
Постоянный
Регистрация: 11.10.2007
Сообщений: 406
С нами:
9780227
Репутация:
1423
|
|
Сообщение от Gifts
ElteRUS Эээ, в рот мне ноги, я не понимаю почему это работает, но, ведь, работает
Код:
?login=\&password=%2B'
Хм, да это то, только своеобразно оформлено но сути не меняет, твой вариант даже круче ))
Я рассчитывал на такое:
Логин '='
Пароль '='
Либо так a'='a в логин и пароль. Давайте посмотрим на получившиеся запрос:
PHP код:
select * from `admin` where login = 'a'='a' and password = 'a'='a'
Такой запрос прокатит. Выполните у себя на локалхосте
PHP код:
Select * from mysql.user where user = 'a'='a';
Выведутся все записи таблицы. Ну тот факт, что mysql поддерживает прямое сравнение строк – известен. Но дальше круче )) Выполните такое
PHP код:
Select * from mysq.user where user = 'aasdfsdf'='usu';
И это прокатит. Хотя очевидно, что эти строки не равны.
Твой пример из той же оперы
Код:
select * from `admin` where login = '\' and password = '%2B''
Только здесь видно что кроме = может быть и +, а так же * - )))
|
|
|

04.09.2009, 12:54
|
|
Познающий
Регистрация: 13.04.2008
Сообщений: 35
С нами:
9515088
Репутация:
1
|
|
Объясните пожалуйста по зад.34.
echo (int)((0.1+0.7) *10);
почему выводит 7? и 8 если echo (int)(0.8*10)...
каким образом сумма в скобках влияет на результат? ведь 0,1+0,7=0,8
и при приведении к целому, д.б. просто откинуться дробная часть...
|
|
|

04.09.2009, 13:12
|
|
Banned
Регистрация: 14.01.2009
Сообщений: 515
С нами:
9116877
Репутация:
468
|
|
Подробное разъяснение случая с 'а'='б'='с' http://bugs.mysql.com/bug.php?id=39337
это не баг,а преобразование типов.
Фамнам, это непредсказуемо в некоторых случаях,зависит от платформы ,на которой исполняется пхп код.
|
|
|

04.09.2009, 13:33
|
|
Познающий
Регистрация: 13.04.2008
Сообщений: 35
С нами:
9515088
Репутация:
1
|
|
спасибо, Krist_ALL
|
|
|

04.09.2009, 14:57
|
|
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами:
10088966
Репутация:
646
|
|
хотя конечно логин и пароль на 6 символов – бредово для реальных условий
так еще бредовей с логинов и пассов юзеров подстроки 'and' и 'or' удалять )))
|
|
|

18.09.2009, 14:34
|
|
Banned
Регистрация: 14.01.2009
Сообщений: 515
С нами:
9116877
Репутация:
468
|
|
Добавил еще 3 задания.
//ОФТОП
Завтра пойду в институт первый раз, волнуюсь) Поддержим Krist_ALLа!
|
|
|

18.09.2009, 15:27
|
|
Постоянный
Регистрация: 07.03.2009
Сообщений: 357
С нами:
9042754
Репутация:
399
|
|
38.
PHP код:
<?php
function ch($num,$str){
$res=str_split($str);
$i=0;
while ($i < count($num)){
$cn=$num[$i]-1;
$res[$cn]=strtoupper($res[$cn]);
$i++;
}
return implode("",$res);
}
?>
|
|
|

18.09.2009, 16:33
|
|
Постоянный
Регистрация: 24.05.2008
Сообщений: 589
С нами:
9454841
Репутация:
504
|
|
Сообщение от Gray_Wolf
38.
PHP код:
<?php
function ch($num,$str){
$res=str_split($str);
$i=0;
while ($i < count($num)){
$cn=$num[$i]-1;
$res[$cn]=strtoupper($res[$cn]);
$i++;
}
return implode("",$res);
}
?>
наркоманы млять
PHP код:
<?php
function ch($num,$str){
foreach($num as $key => $value)
$str[$value-1] = strtoupper($str[$value-1]);
return $str;
}
?>
39:
Выведет 0
Я не знаю почему так, но думаю из-за следующего.
Все происходит из-за динамического определения типа переменной.
ноль вначале свидетельствует что значение переменной - восьмеричное число, но так как после нуля идет 8, чего в восмеричном представлении быть не может, то число превращается в ноль.
Еще раз повторю, что я не знаю почему так, но с другими системами счисления не получилось добиться такого результата. в десятично и шестнадцатиричном все время ругается так:
Parse error: syntax error, unexpected T_STRING
А вообще я просто не знаю где об этом можно нормально почитать. Отсюда и все проблемы
40:
PHP код:
<?php
$a[1]['a'] = 'lol';
$a[1]['b'] = 'heh';
$a[2]['a'] = 'gygy';
$a[2]['b'] = 'smeh';
$b = array();
$i = 0;
foreach($a as $val)
foreach($val as $value => $key)
$b[$i++] = $key;
print_r($b);
?>
хотя думаю можно как-нибудь и покороче сделать
Последний раз редактировалось gisTy; 19.09.2009 в 11:00..
|
|
|

18.09.2009, 15:32
|
|
Постоянный
Регистрация: 07.03.2009
Сообщений: 357
С нами:
9042754
Репутация:
399
|
|
39.
Всё дело в динамической типизации PHP.
|
|
|

19.09.2009, 23:17
|
|
Новичок
Регистрация: 15.09.2009
Сообщений: 1
С нами:
8766227
Репутация:
4
|
|
Задание 40:
PHP код:
<?php
$a[1]['a'] = 'lol';
$a[1]['b'] = 'heh';
$a[2]['a'] = 'gygy';
$a[2]['b'] = 'smeh';
$result = array();
slice_array( $a );
echo '<pre>';
print_r( $result );
function slice_array( $array = array() ) {
global $result;
foreach( $array as $value ) {
if( is_array( $value ) ) slice_array( $value );
else $result[] = $value;
}
}
?>
Эта функция "плющит" любой массив...
Ну или если не хотите заморачиваться с глобальными переменными:
PHP код:
function slice_array( $array = array(), &$result ) {
foreach( $array as $value ) {
if( is_array( $value ) ) slice_array( $value, $result );
else $result[] = $value;
}
}
Первый аргумент - массив который надо плющить, а второй - куда все запишется ( передается указатель на массив, т.е. он должен быть заранее определен )
Задача 39:
восьмеричные числа имеют следующее правило:
0[0-7]+
ноль впереди и дальше числа от 0 до 7 ( не выше - на то они и восьмеричные числа ). все что выше == 0
Поэтому эта программа выведет 0. Чтобы вывести 8 нужно написать: 010
По поводу задачи 38 - думаю gisTy норм решение дал...
Последний раз редактировалось Van Bekannt; 19.09.2009 в 23:40..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|