HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 03.09.2009, 20:57
ElteRUS
Постоянный
Регистрация: 11.10.2007
Сообщений: 406
С нами: 9780227

Репутация: 1423
По умолчанию

Цитата:
Сообщение от Gifts  
ElteRUS Эээ, в рот мне ноги, я не понимаю почему это работает, но, ведь, работает
Код:
?login=\&password=%2B'
Хм, да это то, только своеобразно оформлено но сути не меняет, твой вариант даже круче ))
Я рассчитывал на такое:

Логин '='
Пароль '='

Либо так a'='a в логин и пароль. Давайте посмотрим на получившиеся запрос:

PHP код:
select from `adminwhere 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''

Только здесь видно что кроме = может быть и +, а так же * - )))
 
Ответить с цитированием

  #2  
Старый 04.09.2009, 12:54
famnam
Познающий
Регистрация: 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
и при приведении к целому, д.б. просто откинуться дробная часть...
 
Ответить с цитированием

  #3  
Старый 04.09.2009, 13:12
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
С нами: 9116877

Репутация: 468


По умолчанию

Подробное разъяснение случая с 'а'='б'='с' http://bugs.mysql.com/bug.php?id=39337
это не баг,а преобразование типов.

Фамнам, это непредсказуемо в некоторых случаях,зависит от платформы ,на которой исполняется пхп код.
 
Ответить с цитированием

  #4  
Старый 04.09.2009, 13:33
famnam
Познающий
Регистрация: 13.04.2008
Сообщений: 35
С нами: 9515088

Репутация: 1
По умолчанию

спасибо, Krist_ALL
 
Ответить с цитированием

  #5  
Старый 04.09.2009, 14:57
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами: 10088966

Репутация: 646


По умолчанию

Цитата:
хотя конечно логин и пароль на 6 символов – бредово для реальных условий
так еще бредовей с логинов и пассов юзеров подстроки 'and' и 'or' удалять )))
 
Ответить с цитированием

  #6  
Старый 18.09.2009, 14:34
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
С нами: 9116877

Репутация: 468


По умолчанию

Добавил еще 3 задания.
//ОФТОП
Завтра пойду в институт первый раз, волнуюсь) Поддержим Krist_ALLа!
 
Ответить с цитированием

  #7  
Старый 18.09.2009, 15:27
Gray_Wolf
Постоянный
Регистрация: 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);
}
?>
 
Ответить с цитированием

  #8  
Старый 18.09.2009, 16:33
gisTy
Постоянный
Регистрация: 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..
 
Ответить с цитированием

  #9  
Старый 18.09.2009, 15:32
Gray_Wolf
Постоянный
Регистрация: 07.03.2009
Сообщений: 357
С нами: 9042754

Репутация: 399
По умолчанию

39.
Всё дело в динамической типизации PHP.
 
Ответить с цитированием

  #10  
Старый 19.09.2009, 23:17
Van Bekannt
Новичок
Регистрация: 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..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[php] On-Line Фейк mail.ru m0Hze Уязвимости Mail-сервис 45 21.08.2013 09:10
SQL-Inj Finder by mr.The [Special for antichat] [PHP] mr.The PHP 24 07.08.2009 01:30
Задания ~Fenix~ Болталка 11 13.05.2006 11:03



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.