За последние 24 часа нас посетили 50983 программиста и 1803 робота. Сейчас ищет 721 программист ...

function php

Тема в разделе "PHP для новичков", создана пользователем energy455, 18 мар 2015.

  1. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    Всем привет, делаю одну штучку для себя просто для практики. У меня много php файлов, методом ajax проверяю введные данные. Я их хочу объеденить в один php файл.Но возникла проблема :

    Код (PHP):
    1. <?php
    2. ini_set('display_errors','On');
    3. error_reporting(E_ALL|E_STRICT);
    4. include_once("mysqli.php");
    5.  
    6. if(isset($_POST['login'])) logins();
    7. //проверка логина и пароля
    8. function logins(){
    9.     $login = htmlspecialchars($_POST['login']) & strip_tags($_POST['login']);
    10.     $pass = htmlspecialchars($_POST['pass']) & strip_tags($_POST['pass']);
    11.     $login = mysqli_real_escape_string($mysqli,$login); // эта 
    12.         $pass = mysqli_real_escape_string($mysqli,$pass); // и эта
    13.     if (empty($login) & empty($pass)) {
    14.         echo "5";
    15.         exit();
    16.     }
    17.     $chl = mysqli_query($mysqli, "SELECT id FROM a_game WHERE login = '$login'");
    18.     $chl = mysqli_fetch_assoc($chl);
    19.     if (!empty($chl)) {
    20.         echo "6";
    21.         exit();
    22.     }
    23. }
    24. ?>
    ругается на 2 строчки, я их пометил.

    Notice: Undefined variable: mysqli in ...

    Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in ...
    Без функции все работает на ура. В чем мб проблема?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    быстрее найти ответ в гугле.
    Код (PHP):
    1. function logins(){
    2. var_dump($_POST); 
    null
     
  3. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    array(2) { ["login"]=> string(5) "login" ["pass"]=> string(4) "pass" }
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    тьфу...

    Код (PHP):
    1. function logins(){
    2. global $mysqli; 
     
  5. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    ,
    отлично спасибо, я просто еще не работал с функциями. Тему пока не закрывайте вдруг еще возникнут проблемы
    [​IMG]
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    хД))

    Добавлено спустя 1 минуту 48 секунд:
    Код (PHP):
    1. function stripslashes_deep( $value )
    2. {
    3.     if ( is_array( $value ) )
    4.     {
    5.         $value = array_map ( 'stripslashes_deep', $value );
    6.     }
    7.     elseif ( is_object( $value ) )
    8.     {
    9.         $vars = get_object_vars( $value );
    10.         foreach ( $vars as $key=>$data )
    11.         {
    12.             $value->{$key} = stripslashes_deep( $data );
    13.         }
    14.     }
    15.     elseif ( is_string( $value ) )
    16.     {
    17.         $value = stripslashes ( $value );
    18.     }
    19.     return $value;
    20. }
    21. function __SQLiteRay_magic_quotes()
    22. {
    23.     if ( get_magic_quotes_gpc() )
    24.     {
    25.         $_GET    = stripslashes_deep( $_GET    );
    26.         $_POST   = stripslashes_deep( $_POST   );
    27.         $_COOKIE = stripslashes_deep( $_COOKIE );
    28.     }
    29.     // GET + POST.
    30.     $_REQUEST = array_merge ( $_GET, $_POST );
    31. }
    32.  
    33. __SQLiteRay_magic_quotes(); 
    на всякий случай вдруг возникнут с \" проблемы
     
  7. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    а можно как нибудь сделать что бы была супер глобальная переменная $mysqli, у меня почти все функции юзают бд, что бы каждый раз не писать?
    [​IMG]
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Статичный класс, паттерн "реестр". Наздоровье.
     
  9. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    как это сделать?
    дайте пожалуйста ссылки)
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    http://php.net/manual/ru/language.oop5.static

    Добавлено спустя 4 минуты 52 секунды:
    Если кратенько, то тебе нужно:

    Код (PHP):
    1. class Registry
    2. {
    3.     public static $sql_connection = null;//Можно сразу присвоить подключение к БД;
    4. }
    5. //Если сразу не присвоил коннект, то, получив его, присваиваешь к Registry::$sql_connection;  
    Потом просто используй Registry::$sql_connection для передачи в функции мускула. Эта переменная будет видна отовсюду и дальше.
     
  11. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    так делаю
    Код (PHP):
    1. class db
    2. {
    3.      public static $connect = "new mysqli(\"localhost\", 'root', 'root', 'mysql')";
    4. }
    5.  
    так подключаюсь

    Код (PHP):
    1. $res = mysqli_query(db::$connect, "SELECT id FROM a_game WHERE login = '$login' AND pass = '$pass'");
    2.  
    что не так?
     
  12. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    зачем ты в строку перевел когда должна подключаться?
    [​IMG]
     
  13. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    да я вообще не пойму, как правильно?
    [​IMG]

    Добавлено спустя 4 минуты 57 секунд:
    хотяб примерно
     
  14. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    new mysqli("localhost", 'root', 'root', 'mysql')";
     
  15. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    Код (Text):
    1.  
    2.  public static $connect = "new mysqli(\"localhost\", 'root', 'root', 'mysql')";
    эт не то?
     
  16. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    ты в строку превратил подключение, в СТРОКУ
    [​IMG]
     
  17. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    СТРОКУ
    а понял, а как сделать что бы норм было?)
     
  18. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    ТРОЛЛ ФЕЙС (С)
    [​IMG]
    я тебя раскусил
    [​IMG]
     
  19. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    да емае, как надо ?)) я чет вообще не врублюсь. внатуре

    Добавлено спустя 4 минуты 19 секунд:
    пожалуйста помоги
     
  20. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    Вот придут КолЛегИ по форуму и рассмеются не над тобой а надо мной. Элементарную вещь не могу докатить
    [​IMG]

    Добавлено спустя 4 минуты 20 секунд:
    Код (PHP):
    1. class Arr
    2. {
    3.      public static $HZ = array(array(array(array(array(array(array(array(array(')')))))))));
    4. }
    5. function lol()
    6. {
    7.      return Arr::$HZ;
    8. }
    9.  
    10. var_dump(lol()); 
     
  21. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    а спасиб
     
  22. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    а доширак?
    [​IMG]
     
  23. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    позже подвизут

    Добавлено спустя 9 минут 23 секунды:
    крч global норм
     
  24. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    Код (PHP):
    1. class Arr
    2. {
    3.      public static $HZ = null;
    4. }
    5. Arr::$HZ = new PDO( "sqlite:" . dirname( __FILE__ ) . "dfgdsfgdf" );
    6.  
    7. function lol()
    8. {
    9.      return Arr::$HZ;
    10. }
    11.  
    12. var_dump(lol());  
     
  25. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    ого, спасибо!!
    доширак выслал :)