2015-09-21 3 views
0

Я работаю над очень простой поисковой системой. Он в основном работает, проверяя, существует ли слово. Если это так, он возвращает ссылку. Я знаю, что большинство из вас предложит создать базу данных из phpMyAdmin, но я не помню пароль, чтобы сделать команду mySql_Connect.StrPos всегда возвращает False?

Во всяком случае вот код:

<?php 

session_start(); 

$searchInput = $_POST['search']; 

var_dump($inputPage1); 
var_dump($searchİnput); 

$inputPage1 = $_SESSION['pOneText']; 
$inputPage2 = isset($_SESSION['pTwoText']) ? $_SESSION['pTwoText'] : ""; 
$inputPage3 = isset($_SESSION['pThreeText']) ? $_SESSION['pThreeText'] : ""; 

if (strpos($inputPage1, $searchInput)) { 
    echo "True"; 
} else { 
    echo "False"; 
} 

?> 

Когда я искать слово, любое слово из любой страницы, погода она существует или нет, он всегда возвращает ложь. Кто-нибудь знает, почему?

+0

Может быть, нет ничего в '$ _SESSION [«pOneText»] 'или условие поиска пусто, или там действительно нет матча , Вы не предоставили достаточно информации здесь. Кроме того, вы, вероятно, не должны забывать, что ваш пароль влияет на то, как вы архитектируете свою систему! –

+0

İm очень жаль, если я не предоставил вам достаточно информации. Спросите, что еще вам нужно, и я могу вам сказать. Что касается условия поиска, я могу заверить вас, что я искал термины, которые существуют на странице, и что я красный, например «The». –

+2

, пожалуйста, поделитесь следующими выходами: print_r ($ _ POST); print_r ($ _ SESSION); и еще одна вещь, StrPos следует использовать, как это, StrPos ($ стог, $ niddle) это означает, что, если вы хотите найти абв от ABCDEF, вы должны написать StrPos ('ABCDEF', 'ABC') – satroy

ответ

0

От PHP documentation:

Предупреждение: Эта функция может возвращать как логическое значение FALSE, но может также возвращать не-логическое значение, которое приводится к FALSE. Пожалуйста, прочитайте раздел о Booleans для получения дополнительной информации. Используйте оператор === для проверки возвращаемого значения этой функции.

Таким образом, функция возвращает целое число 0 с момента $searchInput начинается с первым символом $inputPage1. Поскольку он находится внутри условия if, который ожидает логическое значение, целое число затем преобразуется в единицу. При преобразовании в boolean нуль равен false, поэтому вместо этого выполняется блок else.

Чтобы исправить это, вам нужно использовать !== оператор (Не равно эквивалент ===):

if (strpos($inputPage1, $searchInput) !== false) { 
    //... 
+0

İt все еще возвращает false, спасибо за ваши усилия! –

+1

Сделайте 'var_dump' на' $ inputPage1' и '$ searchInput'. Затем отредактируйте свой вопрос, чтобы он содержал результат. И вы заметили мое редактирование, перейдя на '! == false'? – Anders

+0

Не могли бы вы показать пример, может быть? –

0

Try ул I поз(), чтобы соответствовать нечувствительны к регистру

+0

Все еще не работает! –

-1

Первая печать все пунктов в $ _POST и $ _SESSION с использованием

echo "<pre>"; 
print_r($_POST); 
print_r($_SESSION); 

и убедитесь, что строка поиска действительно существует в t он больше струн. Также убедитесь, что ваши использует «ложь» для сравнения: т.е.

$pos = strpos($biggerString,$seachString); 

if($pos !== false) 
{ 
    echo "Not found"; 
} 
Смежные вопросы