Этот код будет делать то, что вы хотите (если вы хотите поменять выбранный с помощью первого дочернего элемента). Если вам нужно что-то еще, вам нужно быть более точным.
& lt; script type = "text / javascript" & gt; function swapDiv (event, elem) {elem.parentNode.insertBefore (elem, elem.parentNode.firstChild); } & lt; / script & gt; & lt; div id = "container" & gt; & lt; div onclick = "swapDiv (событие, это);" & gt; 1 & lt; / div & gt; & lt; div onclick = "swapDiv (событие, это);" & gt; 2 & lt; / div & gt; & lt; div onclick = "swapDiv (событие, это);" & gt; 3 & lt; / div & gt; & Lt; / дел & GT;
Нашел проблему. когда я это сделал:
echo strlen($hash)
он напечатал 90, что странно, потому что в конце концов не было пробелов, когда я печатал сообщение об успехе / неудаче, а поле имеет длину varchar 255
Я добавил эту строку:
$hash = substr( $hash, 0, 60 );
И теперь он отлично работает.
Странно, что никто больше не сталкивался с этой проблемой. Есть похожие сообщения о password_verify, но ни один из них не требовал такого преобразования или любого преобразования:
php password_verify not working
password_verify php не соответствует
http://forums.phpfreaks.com/topic/283407-need-help-with-password-verify/
Использование функции password_hash и password_verify с помощью PHP 5.5
Меня беспокоит то, что это не позволяет переходить на совместимость с кодом. Как я узнаю, что хэш имеет длину 60 символов, когда по умолчанию изменяется?
У меня была такая же проблема, и она все еще не работала, несмотря на то, что мои столбцы базы данных были varchar (255), что хеши были 60 символов, и обеспечение моей кодировки было UTF-8 на всем протяжении. Я довольно новичок в PHP и SQL, поэтому я не буду притворяться, что понимаю, почему это сработало, но мне удалось это исправить, поэтому я надеюсь, что этот пост поможет другим людям с той же проблемой.
Оказалось, что основная причина, по которой password_verify () не проверяла мои хэши, состояла в том, что я сделал подготовленный оператор, который использовал хранимую процедуру ранее в скрипте, не выбирая все результаты запроса должным образом очистите буфер, перед закрытием и повторным подключением для выполнения следующего запроса. Вызов next_result () в mysqli_link после закрытия инструкции будет гарантировать, что любые результаты будут использованы. Кроме того, я использовал другой подготовленный оператор с хранимой процедурой, чтобы сделать вставку для пароля, но мне все еще нужно было делать вызовы store_result () и free_result (), даже если из вставки не были возвращены результирующие наборы. Я предполагаю, что комбинация этих вещей искажала мои данные где-то вдоль линии, в результате чего password_verify () возвращал false на, казалось бы, идентичные хэши.
Этот ответ был для другого но я счел это полезным для изучения того, как правильно закрыть подготовленные заявления с помощью хранимых процедур.
Только для справок в будущем. У меня была такая же проблема, что и пароли без причины. Когда я внимательно посмотрел на него, я увидел, что поле пароля в базе данных было недостаточно большим для хранения полного хеша, поэтому некоторые символы были отключены. После увеличения размера поля базы данных он работал отлично.
У меня была та же проблема, с которой у вас была работа, по какой-то причине кажется, что она помещает в код код:
$hash = substr( $hash, 0, 60 );
, хотя моя строка длиной уже 60 символов.
CHAR
для поля хэшированного пароля в базе данных и установить 60 как его длину при использовании константыPASSWORD_BCRYPT
. В этом случае хэш всегда будет содержать 60 символов. – Ashesh Kumar Singh 15 April 2015 в 07:12