За последние 24 часа нас посетили 22289 программистов и 1023 робота. Сейчас ищут 656 программистов ...

Php7 и mssql

Тема в разделе "MSSQL", создана пользователем lehaer, 10 мар 2018.

  1. lehaer

    lehaer Новичок

    С нами с:
    10 мар 2018
    Сообщения:
    3
    Симпатии:
    0
    переводил приложения с mysql на mssql, и что то пошло нет, помоги, прикладываю рабочий код на mysql

    Код (Text):
    1. <?php
    2.  
    3. header('Access-Control-Allow-Origin: *');
    4. header('Content-Type: application/json');
    5.  
    6. if(!isset($_POST)) die();
    7.  
    8. session_start();
    9.  
    10. $response = [];
    11.  
    12. $con = mysqli_connect('localhost', 'root', '', 'test_site');
    13.  
    14. $username = mysqli_real_escape_string($con, $_POST['username']);
    15. $password = mysqli_real_escape_string($con, $_POST['password']);
    16.  
    17. $query = "SELECT * FROM `users` WHERE username='$username' AND password='$password'";
    18.  
    19. $result = mysqli_query($con, $query);
    20.  
    21. if(mysqli_num_rows($result) > 0) {
    22. $response['status'] = 'loggedin';
    23. $response['user'] = $username;
    24. $response['id'] = md5(uniqid());
    25. $_SESSION['id'] = $response['id'];
    26. $_SESSION['user'] = $username;
    27. } else {
    28. $response['status'] = 'error';
    29. }
    30.  
    31. echo json_encode($response);

    и то что у меня получилось, но не работает, такую же таблицу создал, все срабатывает, вроде ошибок но по определенному username и password из базы данных не заходит

    Код (Text):
    1. <?php
    2.  
    3. header('Access-Control-Allow-Origin: *');
    4. header('Content-Type: application/json');
    5.  
    6. if(!isset($_POST)) die();
    7.  
    8. session_start();
    9.  
    10. $response = [];
    11.  
    12. $servername = 'localhost';
    13. $options = [
    14. 'UID' => 'sa', // имя пользователя, имеющего доступ к БД
    15. 'PWD' => '1234', // пароль
    16. 'Database' => 'test_site'
    17. ];
    18. $conn = sqlsrv_connect($servername, $options);
    19.  
    20.  
    21. $username = sqlsrv_prepare($conn, $_POST['username']);
    22. $password = sqlsrv_prepare($conn, $_POST['password']);
    23.  
    24. $sql = "SELECT * FROM [users] WHERE username='$username' AND password='$password'";
    25.  
    26. $result = sqlsrv_query($conn, $sql);
    27.  
    28. if(sqlsrv_num_rows($result) > 0) {
    29. $response['status'] = 'loggedin';
    30. $response['user'] = $username;
    31. $response['id'] = md5(uniqid());
    32. $_SESSION['id'] = $response['id'];
    33. $_SESSION['user'] = $username;
    34. } else {
    35. $response['status'] = 'error';
    36. }
    37.  
    38. echo json_encode($response);
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.236
    Адрес:
    там-сям
  3. lehaer

    lehaer Новичок

    С нами с:
    10 мар 2018
    Сообщения:
    3
    Симпатии:
    0
    извиняюсь, пробовал и addslashes, безрезультатно...
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.236
    Адрес:
    там-сям
    эх, один в один заменив только имена функций, не получится. надо осознанно переписывать. нет аналога *escape — используй параметры запроса. все функции описаны в официальной документации https://secure.php.net/manual/en/ref.sqlsrv

    В sqlsrv_query() можно подставлять параметры запроса. так что никакие предварительные *escape или addslashes не нужны, вместо этого используй плейсхолдеры в виде вопросиков в теле SQL. доки читай вместе с комментариями, ёмана.

    [offtopic]
    есть два пути:
    а) изучить документацию и осознанно вносить правки или
    б) заплатить тому, кто умеет
    [/offtopic]