За последние 24 часа нас посетили 48362 программиста и 1729 роботов. Сейчас ищут 705 программистов ...

Поиск текста

Тема в разделе "PHP для новичков", создана пользователем Fox-, 12 янв 2018.

  1. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    Привет всем, опыта не хватает, но пытаюсь написать скрипт, который ищет строку с ключом и прописывает в переменную все ключи(слова) с той же строки.
    Txt содержит следующий текст-базу
    Код (Text):
    1.  
    2. gydfgTEFdm|2yrhsykrw|8jktet|sjs5j
    3. SHrujhfd54|kftwrb|6hrh7|kfkrjdyrshd
    4. 575hfvng|fghyhrt|dfghfk|drh5j
    и т.д
    Например я ввожу в форму для ввода gydfgTEFdm (первая строка) жму кнопку и скрипт должен точно до знака | прописать это слово в переменную, все слова из строки до знака | прописать в переменные.
    И вывести результат примерно так:
    PHP:
    1. echo 'stolb1='.$stolb1; результат вывода примернотак- stolb1=gydfgTEFdm
    2. echo 'stolb2='.$stolb2; результат вывода примернотак- stolb2=2yrhsykrw
    3. echo 'stolb3='.$stolb3; результат вывода примернотак- stolb3=8jktet
    4. echo 'stolb4='.$stolb4; результат вывода примернотак- stolb4=sjs5j
    искать слова только по первому столбцу.

    Я слово ищу и если оно есть записываю в сессию следующим кодом пока что
    PHP:
    1. <form method="post">
    2.  
    3. <button type="sumbit" name="" value="" class="css3button">ok</button>
    4. <input type="text" name="name" />
    5. </form>
    6. <?php
    7. $var = $_POST['name'];
    8.  
    9. if (strpos(file_get_contents("/storage/ssd3/042/1566042/public_html/1/list-installs.txt"), $var))
    10. {
    11. echo $_SESSION["name"];
    12. echo "<p><a href='sess.php'>$var</a></p>";
    13. }
    14. else echo "Error";
    15. ?>
    в файле sess.php следующий код :
    PHP:
    1. <?php
    2. echo $_SESSION['name'];
    3. ?>
    но при переходе на sess.php сессии не отображаются, почему? Помогите В одном из двух вопросов пацаны/мужики please
     
  2. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    в первом файле (в котором форма) напиши session_start(); в начале. Да и записать что-то нужно в переменную эту. Например:
    PHP:
    1. $_SESSION['name'] = $_POST['name'];
    --- Добавлено ---
    А с переменными примерно так:
    PHP:
    1. $string = 'gydfgTEFdm|2yrhsykrw|8jktet|sjs5j
    2. SHrujhfd54|kftwrb|6hrh7|kfkrjdyrshd
    3. 575hfvng|fghyhrt|dfghfk|drh5j';
    4.  
    5. $array = explode('|', $string);
    6.  
    7. if(in_array($_POST['name'], $array)) {
    8.      $i = 1;
    9.      foreach($array as $result) {
    10.          echo "stolb$i=$result";
    11.          $i++;
    12.      }
    13. }
    14. else {
    15.      echo 'Error';
    16. }
     
  3. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    Не тот код скинул, он не рабочий сори, сессии были, не работал код, при переходе на страницу не выводит сессии. Вот код
    PHP:
    1. <html>
    2. <head>
    3.  
    4. <link rel="icon" href="/favicon.ico" type="image/x-icon" />
    5. <link rel="shortcut icon" /favicon.ico" type="image/x-icon" />
    6.  
    7. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    8. </head>
    9. <body>
    10. <form method="POST">
    11. <centr>
    12. <input type="text" name="login" />
    13. <button type="sumbit" name="" value="" class="css3button">ok</button>
    14. </centr>
    15.  
    16. </form>
    17.  
    18.  
    19. <?php
    20.  
    21. $var = $_POST['login'];
    22. //$_SESSION["name"] = "$var";
    23. $_SESSION['name'] = $_POST['login'];
    24.  
    25. if (strpos(file_get_contents("/storage/ssd3/042/1566042/public_html/1/list-installs.txt"), $var))
    26. {
    27. echo $_SESSION["name"];
    28. echo "<p><a href='sess.php'>$var</a></p>";
    29. }
    30.  
    31. else echo "Error";
    32.  
    33.  
    34.  
    35.  
    36. ?>
    37. </body>
    38.  
    39. </html>
    в принципе сеcсии отображаются после чтения файла txt , но после перехода на sess.php не выводит, при использовании обычного кода работает
    Код (Text):
    1. <?php
    2. session_start();
    3. $_SESSION["test"] = "Php.ru";
    4. ?>
    фаил sess.php
    Код (Text):
    1. <?php
    2. session_start();
    3. echo $_SESSION['test'];
    4. ?>
    при переходе на sess.php выводит данные из сессии
     
    #3 Fox-, 12 янв 2018
    Последнее редактирование: 12 янв 2018
  4. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    @Fox-, сессию нужно стартовать до вывода чего-либо на страницу. А у вас сначала html выводится, а потом уже стартует сессия.
    Вот так должно работать:
    PHP:
    1. <?php
    2.  
    3. $var = $_POST['login'];
    4. $_SESSION['name'] = $var;
    5.  
    6. ?>
    7. <html>
    8. <head>
    9. <link rel="icon" href="/favicon.ico" type="image/x-icon" />
    10. <link rel="shortcut icon" /favicon.ico" type="image/x-icon" />
    11. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    12. </head>
    13. <body>
    14. <form method="POST">
    15. <centr>
    16. <input type="text" name="login" />
    17. <button type="sumbit" name="" value="" class="css3button">ok</button>
    18. </centr>
    19. </form>
    20. <?php
    21. if (strpos(file_get_contents("/storage/ssd3/042/1566042/public_html/1/list-installs.txt"), $var))
    22. {
    23. echo $_SESSION["name"];
    24. echo "<p><a href='sess.php'>$var</a></p>";
    25. }
    26. else echo "Error";
    27. ?>
    28. </body>
    29. </html>
     
    Fox- нравится это.
  5. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    Наконец-то, неужели заработало, я читал о том, что до кодов должен код старта сессии стоять, местами менял html и php коды, в начале php код размещал, но страница не отвечала. Спасибо)

    Код поиска по txt файлу у меня не работает, не выводит результат
    PHP:
    1. <html>
    2. <head>
    3. <link rel="icon" href="/favicon.ico" type="image/x-icon" />
    4. <link rel="shortcut icon" /favicon.ico" type="image/x-icon" />
    5. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    6. </head>
    7. <body>
    8. <form method="POST">
    9. <centr>
    10. <input type="text" name="login" />
    11. <button type="sumbit" name="" value="" class="css3button">ok</button>
    12. </centr>
    13. </form>
    14.  
    15.  
    16. <?php
    17. $string = 'gydfgTEFdm|2yrhsykrw|8jktet|sjs5j
    18. SHrujhfd54|kftwrb|6hrh7|kfkrjdyrshd
    19. 575hfvng|fghyhrt|dfghfk|drh5j';
    20. $array = explode('|', $string);
    21. if(in_array($_POST['name'], $array)) {
    22.      $i = 1;
    23.      foreach($array as $result) {
    24.          echo "stolb$i=$result";
    25.          $i++;
    26.      }
    27. }
    28. else {
    29.      echo 'Error';
    30. }
    31. ?>
    32.  
    33. </html>
     
  6. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    name на login заменил, отображает, но он отображает всё из переменной, а нужно 4 слова и в разных переменных каждое..
    Возможно найти определенное слово из первого столбца и каждое слово с этой строки, которые разделены символом | передать в сессии ( в строке 4 слова) ?. Например искомое слово gydfgTEFdm, если это слово найдено( ищет по первому столбцу слова), то добавляет само искомое слово в сессию и те 3 слова которые рядом с права тоже в сессии, каждое слово добавить в отдельную сессию, что б была возможность вывести значение каждой сессии.
     
  7. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    @Fox-
    PHP:
    1. <?php
    2. $string = 'gydfgTEFdm|2yrhsykrw|8jktet|sjs5j
    3. SHrujhfd54|kftwrb|6hrh7|kfkrjdyrshd
    4. 575hfvng|fghyhrt|dfghfk|drh5j';
    5. $array = explode('|', $string);
    6. if($array[0] == $_POST['name']) {
    7.      $i = 1;
    8.      foreach($array as $result) {
    9.          $_SESSION["stolb_$i"] = $result;
    10.          $i++;
    11.      }
    12. }
    13. else {
    14.      echo 'Error';
    15. }
    16. ?>
     
    Fox- нравится это.
  8. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    Спасибо, но этот код список весь список выводит. Попробую нагляднее привести пример:)
    Хотелось бы пробежаться кодом по никам(Alex123,Vova123,Sasha12) и если найден ник прописать сам ник в переменные и данные которые рядом,например ищу Sasha12 найти этот ник и данные именно с этой строки в отдельные переменные добавить,чтоб ник,город,почта,число - были в разных переменных. Если не найден ник то echo "ник не найден".

    Пример txt :
    Код (Text):
    1.  
    2. Alex123|Moskva|Mail|50
    3. Vova123|Ufa|Mail|70
    4. Sasha12|Piter|Mail|1000
    ники пользователей это, и рядом их данные, находим ник и все данные об этом пользователе в отдельную переменную прописываем -Город, mail , число.
    И спасибо, за то что помогаете
     
  9. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    если у тебя data.txt с содержимым:

    Alex123|Moskva|Mail|50
    Vova123|Ufa|Mail|70
    Sasha12|Piter|Mail|1000

    тогда читаешь файл в массив:
    PHP:
    1. $arrayDump = file("./data.txt", FILE_IGNORE_NEW_LINES);
    затем проходишься по массиву в цикле разбивая строку на подстроку и занося каждую подстроку в переменную

    PHP:
    1. foreach($arrayDump as $stringDump){
    2. list($name, $city, $mail, $price) = explode("|", $stringDump);
    3.  
    4. if($qwery == $name){
    5. echo $name;
    6. echo $city;
    7. echo $mail;
    8. echo $price;
    9. }
    10. }
    вот рабочий вариант:

    PHP:
    1. <?php
    2.  
    3. $qwery = "Sasha12";
    4.  
    5. $arrayDump = file("./data.dat", FILE_IGNORE_NEW_LINES);
    6.  
    7.  
    8. foreach ($arrayDump as $strDump) {
    9.    
    10.     list($name, $city, $mail, $price) = explode("|", $strDump);
    11.  
    12.     if (trim($name) == trim($qwery)) {
    13.         echo $name."<br>";
    14.         echo $city."<br>";
    15.         echo $mail."<br>";
    16.         echo $price."<br>";
    17. // break;
    18.     }
    19.  
    20. }
    21.  
    22.  
    23. ?>
    Но тут есть такой момент, если к примеру у тебя будет несколько одинаковых имен по которому будешь искать он выдаст все варианты , к примеру будет у тебя вот так:

    Sasha12|Piter|Mail|1000
    Sasha12|Krasnodar|Mail|500

    тебе выдаст их обоих, если нужен только первый попавшийся, то нужно раскомментировать break;

    Кроме всего этого если $qwery будет приходить из формы через GET или POST то нужно обязательно проверять то чтоприходит, на существование, пустая или нет наличие лишних символов и т.п. т.е. обезопасить себя от любой попытки вмешательства из вне!
     
    #9 AlexandrS, 16 янв 2018
    Последнее редактирование: 16 янв 2018
    Fox- нравится это.
  10. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    почему код не работает, в чем ошибка?
    Код (Text):
    1. <?php
    2. session_start();
    3. $var = $_POST['login'];
    4. $_SESSION['name'] = $var;
    5. ?>
    6. <html>
    7. <head>
    8. <link rel="icon" href="/favicon.ico" type="image/x-icon" />
    9. <link rel="shortcut icon" /favicon.ico" type="image/x-icon" />
    10. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    11. </head>
    12. <body>
    13. <form method="POST">
    14. <centr>
    15. <input type="text" name="login" />
    16. <button type="sumbit" name="login" value="" class="css3button">ok</button>
    17. </centr>
    18. </form>
    19.  
    20. <?php
    21.  
    22. if (strpos(file_get_contents("/storage/ssd3/042/1566042/public_html/1/list-installs.txt"), $var))
    23. {
    24. echo $_SESSION["name"];
    25. echo "<p><a href='sess.php'>$var</a></p>";
    26. }
    27.  
    28. else echo "Error";
    29.  
    30.  
    31.  
    32.     if( isset( $_POST['login'] ) )
    33.     {
    34.         $arrayDump = file("./test.txt", FILE_IGNORE_NEW_LINES);
    35. foreach ($arrayDump as $strDump) {
    36.  
    37.     list($name, $city, $mail, $price) = explode("|", $strDump);
    38.     if (trim($name) == trim($var)) {
    39.         echo $name."<br>";
    40.         echo $city."<br>";
    41.         echo $mail."<br>";
    42.         echo $price."<br>";
    43. // break;
    44.     }
    45.         echo 'Кнопка нажата!';
    46.     }
    47.  
    48.  
    49. ?>
    50. </body>
    51. </html>
     
  11. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    HTML:
    1. <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
    забыл href="

    это проверь, скобки {}
    PHP:
    1. }
    2. else echo "Error";
    3.     if( isset( $_POST['login'] ) )



    Там код вообще весь с ошибками написан, да и
    PHP:
    1. if (strpos(file_get_contents("/storage/ssd3/042/1566042/public_html/1/list-installs.txt"), $var))
    почитай как работает strpos(), если у тебя будет имя к примеру Alex789, а в поиске будет Alex7 или Alex или Alex78 или lex7 и т.п. то всё это прокатит как истина (TRUE), а потом при проходе в цикле где будет искаться точное совпадение это будет FALSE

    Я не считаю себя каким-то профессиональным программистом, так любитель, но чтоб в этом деле разбираться нужно не просить кого-то писать код, а ковырять его самому в поисках того или иного косяка, быть параноиком и не стараться закидывать на сервер то, в чем до конца не разобрался т.к. это чревато не приятными последствиями.

    А еще, по правилам хорошего тона, в качестве благодарности можно ставить большой палец вверх :) так сказать в карму помогающего или отвечающего. ;)
     
    #11 AlexandrS, 16 янв 2018
    Последнее редактирование: 16 янв 2018
    Fox- нравится это.
  12. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    @AlexandrS об этом я знаю
    PHP:
    1. if (strpos(file_get_contents("/storage/ssd3/042/1566042/public_html/1/list-installs.txt"), $var))
    код поиска всего слова до знака | нужен, по этому я и просил, как найти текст. Пока хотя бы так.
    --- Добавлено ---
    PHP:
    1. }
    2. {
    3. else echo "Error";
    4. }
    5.     if( isset( $_POST['login'] ) )
    или как
    не помогло
     
  13. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    в конце не закрыта была 1 скобка
    --- Добавлено ---
    @AlexandrS Спасибо, от души, + к карме естественно не только виртуально, но и реально для души)))
     
    AlexandrS нравится это.