Автор Тема: Почему не работает php  (Прочитано 1688 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Василь

Почему не работает php
« : 16 Август 2015, 02:49:14 »
Вот такой примерчик почему не работает?$c = rand(''.date("Y-m-d H:i:s").'','9999999999');
$v = md5('index');
echo "<a href='/index.php?".$c."&".$v."'>Тест</a><br/>";
if (isset($_GET[''.$v.''])){
echo "Ссылка сработала..;
}

Оффлайн Lyric

Re: Почему не работает php
« Ответ #1 : 16 Август 2015, 12:53:28 »
Надо добавить кавычку, иначе работать ничего не будет, т. е. вместо
echo "Ссылка сработала..; написать
echo "Ссылка сработала..";

Зачем объединять тут ''.date("Y-m-d H:i:s").'' значение даты ни счем, если ничего от этого не изменится?
Убираем объединение:
$c = rand(date("Y-m-d H:i:s"), '9999999999');
По той же причине строку
if (isset($_GET[''.$v.''])){
меняем на
if (isset($_GET[$v])) {

Для функции rand нужны числовые параметры, а в числе не может быть ни тире ни пробела. Значит функция из date("Y-m-d H:i:s") будет брать только год (цифры до первого тире, остальное отбросит), например, весь 2016 год будет подставляться число 2016, а в 2017 году - 2017. Какой смысл случайное число привязывать к дате, тем более, что от этого число станет не совсем случайным?
Далее. '9999999999' - это строка, а нужно число.
Исправляем это:
$c = rand(date("Y-m-d H:i:s"), '9999999999');
если количество цифр не имеет значение, на это:
$c = rand(1, 9999999999);
А если надо всегда одинаковую длину, то можно так:
$c = rand(1000000000, 9999999999);

На некоторых платформах rand может выдавать значение от 0 и до 32768 и заставлять её генерировать числа из 10 цифр, как бы, неизвестно, что получится. Меняем код на:
$c = rand(1, 32768);
или
$c = rand(10000, 32768);
Если надо больше числа, то функцию rand меняем, на mt_rand, которая может, например, в Виндовс генерировать число до 2147483647. Меняем на:
$c = mt_rand(1, 2147483647);
или
$c = mt_rand(1000000000, 2147483647);

Двойные кавычки и одинарные в php имеют разное назначения и, например, тут:
echo "Ссылка сработала..";
нужны одинарные. Меняем на
echo 'Ссылка сработала..';
А строку
echo "<a href='/index.php?".$c."&".$v."'>Тест</a><br/>";
меняем на строку
echo '<a href="/index.php?'.$c.'&'.$v.'">Тест</a><br/>';

И последнее. В русском языке нет двоеточия лёжа (..), есть многоточие (...) поэтому строку
echo 'Ссылка сработала..';
меняем на:
echo 'Ссылка сработала...';

Оффлайн Павел

Re: Почему не работает php
« Ответ #2 : 16 Август 2015, 23:25:47 »
Мне ещё не нравится такая строчка
$v = md5('index');
Зачем каждый раз высчитывать, если $v всегда одинаков.
Можно один раз посчитать при написании кода и вставить готовое в скрипт. 

Оффлайн Василь

Re: Почему не работает php
« Ответ #3 : 19 Август 2015, 01:31:18 »
Столько ошибок в таком маленьком скрипте, офанореть!
Спасибо за очень полезную разборку.

Оффлайн IvanoFFMr

  • Новичок
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Пол: Мужской
  • Рефералов: 0
    • Просмотр профиля
Почему не работает php
« Ответ #4 : 29 Февраль 2016, 19:37:40 »
TararykovDG> Спасибо Всё работает
hwd> Наверное функция SET в VBA выполняет функцию трансакции


AllaDeneva

  • Гость
Почему не работает php
« Ответ #5 : 25 Апрель 2016, 16:36:04 »
если в языке есть этот оператор, то почему я не могу его использовать???

p.s. Сергей Геннадьевич, не передумали быть модератором этого форума

 
Забавный рисунок про Японские сканворды