Подключение к серверу oracle для login.php

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

<?php
session_start();

if (!isset($_POST['username']) || !isset($_POST['password'])) {
    header("Location: ../session.php");
}

putenv("ORACLE_SID=teaching");
if ($Connection = oci_connect("w4e09", "melih312")) {
    print "Connection OK \n";}

    if (isset($_SESSION['loggedin'])) header("Location: ../secret.php");

    $Statement = oci_parse($Connection, 'select *
                                    from Company
                                    where address = :un_bv
                                    and email = :pw_bv' );
    Oci_bind_by_name($s, ":un_bv", $_POST['username']);
    Oci_bind_by_name($s, ":pw_bv", $_POST['password']);
    oci_execute($s);
    $r = oci_fetch_array($s, OCI_ASSOC);
}
if ($r) {
    $_SESSION['loggedin']=TRUE; $_SESSION['username'] = "admin";
}
else {
    // No rows matched so login failed
    login_form('Login failed. Valid usernames/passwords ' .
               'are "chris/tiger" and "alison/red"');
}
header("Location: secret.php");
?>

🤔 А знаете ли вы, что...
Java предоставляет инструменты для создания криптографических приложений и шифрования данных.


56
2

Ответы:

Решено

oci_bind_by_name, oci_execute и oci_fetch_array должны использовать ресурс, возвращаемый oci_parse. В вашем случае это будет переменная $Statement:

$Statement = oci_parse(
    $Connection,
    'select * from Company where address = :un_bv and email = :pw_bv'
);

oci_bind_by_name($Statement, ":un_bv", $_POST['username']);
oci_bind_by_name($Statement, ":pw_bv", $_POST['password']);

oci_execute($Statement);
$r = oci_fetch_array($Statement, OCI_ASSOC);

Взгляните на документацию:

http://php.net/manual/en/function.oci-connect.php

http://php.net/manual/en/function.oci-parse.php


Добавьте проверку ошибок:

// During development only
error_reporting(E_ALL);  // In PHP 5.3 use E_ALL|E_STRICT
ini_set('display_errors', 'On');

. . .

if ($Connection = oci_connect("w4e09", "melih312")) {
    print "Connection OK \n";}
else {
    $m = oci_error();
    trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
}

Аналогично проверьте ошибки после oci_execute().

См. «Обработка ошибок PHP OCI8» на стр. 161 бесплатной книги Oracle http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html