[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не пойму как сделать эту проверку и...
Til_Seier
Всем привет,
Хочу сделать проверку, наверное простая и я сам мог бы сделать ее, но голова сейчас просто не варит.

Проверка заключается в следующем:

Например я принял значения со силки $link = "/logo/fer43-sdf23-df22/logo"

Мне нужно, чтобы если эта ccылка выглядит так

 /logo/hash/logo (например /logo/fer43-sdf23-df22/logo)
или
/hash/logo (например /fer43-sdf23-df22/logo)
или
/logo/hash (например /logo/fer43-sdf23-df22)
или
/hash (например /fer43-sdf23-df22)


тогда выводило например ОК!

а если ccылка не имеет такого вида тогда WRONG LINK!

Помогите мне пожалуйста

и еще чтобы например в переменную $hash записывалось значение хэша.
В данном случае $hash должен равняться fer43-sdf23-df22
FatCat
Критерий хеша?
Если длина (слова "logo" и "hash" всего по 4 буквы, а хеш длинный), то можно так:
$link = "/logo/fer43-sdf23-df22/logo";
$hash = "";
$result = "Нету хешу";
$link_arr = explode('/', $link);
foreach($link_arr as $v)
{
if(strlen($v) > 4)
{
$hash = $v;
$result = "OK";
}
}


_____________
Бесплатному сыру в дырки не заглядывают...
Til_Seier
Дело в том, что пользователь может ввести вместо logo другое значение которое может иметь более символов чем 4 или даже больше чем в хэша. Поэтому вряд ли этот способ подходит.
У кого есть еще какие мысли по поводу этой задачи?
FatCat
Как отличить введенное пользователем слово от хеша?

_____________
Бесплатному сыру в дырки не заглядывают...
Til_Seier
Хотя, я не учел что сначала будет проверка, а затем уже хэш считывается, и как вариант этот способ считывания хэша подходит.

Пожалуйста если имеете возможность, помогите с проверкой

или какие еще есть варианты взять хеш?
Astin
Цитата
В данном случае $hash должен равняться fer43-sdf23-df22

Til_Seier
А как ты вообще передаешь этот $hash? Через GET, POST или ты
вообще просто взял и приписал его к ссылке?
Til_Seier
Хорошо, давайте так

Предположим что есть такой код

$String1 = "/company/fer43-sdf23-df22/ company/";
$String2 = "/some_text/fer43-sdf23-df22";
$String3 = "/company/fer43-sdf23-df22";
$String4 = "/fer43-sdf23-df22";
$String5 = "/fer43-sdf23-df22/some_text/";
$String6 = "/fer43-sdf23-df22/company/";
$String7 = "/sdf/company/fsd/fsdf/sdfgsd";

$logo = "company";

ПРОВЕРКА, что строка должна выглядеть или так
"/$logo/регулярное выражение для хэша/$logo/"
или так
"/регулярное выражение для хэша/$logo/"
или так
"/$logo/регулярное выражение для хэша/"
или так
"/регулярное выражение для хэша"


Так вот если в проверку попадет $String1 результат должен быть OK!
если $String2 тогда WRONG!
если $String3 тогда OK!
если $String4 тогда OK!
если $String5 тогда WRONG!
если $String6 тогда OK!
если $String7 тогда WRONG!

Как должна выглядеть проверка?

* Надеюсь так будет понятнее
VeRTak
Цитата (Til_Seier @ 1.06.2016 - 10:21)
Надеюсь так будет понятнее


Лично я нихрена не понял biggrin.gif
inpost
Til_Seier
Тебе задали единственно важный вопрос сейчас выше:
Цитата
Как отличить введенное пользователем слово от хеша?


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Til_Seier
Всем снова привет, действительно извините что пропал на некоторое время и наверняка объяснил не так как требовалось. Что до того как имеет виглятаты хеш то я решил что он будет иметь следующий вид

8 символов - 4 символа - 4 символа - 4 символа - 12 символов


пример:

8020d7fe-fs46-4jqc-ai61-a46x92eu947d


Как сделать так чтобы пропускало только такие хэши?
Astin
Слушай Til_Seier тебе задали вопросы
Цитата
А как ты вообще передаешь этот $hash? Через GET, POST или ты
вообще просто взял и приписал его к ссылке?

и
Цитата
Как отличить введенное пользователем слово от хеша?

Ты ответить на них можешь?

А твой хеш можно особо и не придумывать, просто возьми и захишируй свой ник
вот так
echo md5('Til_Seier');

И увидишь какой хеш у тебя получился, вот и используй его
Твой хеш 95a7d1d61006cb1c6073efa52138e934

И еще раз
Цитата
А как ты вообще передаешь этот $hash? Через GET, POST или ты
вообще просто взял и приписал его к ссылке?
lancelot8097
1 зачем тебе это ? ты думаешь твои ресурсы будит использовать кто-то другой ?
2 Самодельная хеш ???? ты серьёзно ?
3 процедурный код ?
4 что такое htacces знаете ?
Guest
function extractHash($string, $name) {
$regex = '/\/?'.preg_quote($name).'\/([a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})\/'.preg_quote($name).'\/?/';
if (preg_match($regex, $string, $m)) {
return $m[1];
}
return null;
}

//test
$strings = [
"/company/fer43d31-sd23-df22-224d-w2d45g5f6d32/company/",
"/logo/fer43-sdf23-df22",
"/company/fer43d31-sd23-df22-224d-w2d45g5f6d32",
"/logo/fer43d31-sd23-df22-224d-w2d45g5f6d32/logo",
"/fer43-sdf23-df22/some_text/",
"/fer43-sdf23-df22/company/",
"/sdf/company/fsd/fsdf/sdfgsd",
];


$logos = [
'company',
'logo'
];

foreach ($logos as $logo) {
foreach ($strings as $string) {
$hash = extractHash($string, $logo);
echo sprintf("%s\t%55s\t%s\t%s\n", $logo, $string, ($hash ? 'OK' : 'WRONG'), $hash);
}

}


Live demo.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.