yajra php apache authentication oracle11g windows-server-2008

yajra - La página de inicio de sesión de autenticación no funciona con PHP y Oracle en Apache/Windows 2008



lumen oracle connection (3)

No sé sobre el resto, pero debes agregar session_start (); a la parte superior de tu página php. Esto debería ser lo primero en cada página en la que lleve sus sesiones. Normalmente lo pongo justo al lado de la etiqueta así:

<?php session_start(); ...

[ACTUALIZACIÓN: Resuelto: Gracias a todos. Vea el código aquí: http://pastebin.com/1fJmXeG2] Agradezco enormemente cualquier ayuda que pueda obtener sobre este problema. Tenemos una página de inicio de sesión en nuestro sitio que se ejecuta en un antiguo servidor Linux que utiliza Apache 1 y PHP 4. Queremos moverlo a un nuevo servidor de Windows 2008 (64 bits) ... así que instalé Apache 2.25 y PHP 5.4 en el nuevo servidor. También habilité OCI8 conectándose a una base de datos Oracle 11g. Moví los archivos para la página de inicio de sesión al nuevo servidor y no funcionan. Lo que sucede es que la página no ejecuta el script y simplemente lo reenvía al index.php en lugar de redirigirlo para indexar php con la respuesta adecuada. Por supuesto, había algún lenguaje obsoleto que actualicé en el script PHP, pero todavía no funciona. Soy un novato completo, así que no estoy seguro de si es un problema con el script o un problema con la configuración de PHP. Sé que puedo conectarme a la base de datos, ya que hice una página de prueba para hacerlo. Por favor, ayúdame si puedes ... Estoy realmente desesperado. El siguiente es el código para mi página de autorización:

<?php session_start(); // Begin or continue session by registering variables $_SESSION[''USER_ID''] = ''USER_ID''; $_SESSION[''PASSWORD''] = ''PASSWORD''; $_SESSION[''FIRST''] = ''FIRST''; $_SESSION[''LAST''] = ''LAST''; $_SESSION[''ACCESS_KEY''] = ''ACCESS_KEY''; $_SESSION[''conn''] = ''conn''; $_SESSION[''BEENHERE''] = ''BEENHERE''; $_SESSION[''CUSTOMER_NAME''] = ''CUSTOMER_NAME''; $_SESSION[''WAREHOUSING''] = ''WAREHOUSING''; $_SESSION[''TRANSPORTATION''] = ''TRANSPORTATION''; $_SESSION[''MYACCOUNT''] = ''MYACCOUNT''; // Set Environment Variables $SYS_DBUSER = "*****"; $SYS_DBPASSWORD = "*****"; $SYS_DB = "*****"; // Begin Authorization Routine if ( (!isset($USER_ID)) && (!isset($PASSWORD)) ) { echo ''<html>''; echo ''<head>''; echo ''<title> Customer Access - Login</title>''; echo ''<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">''; echo ''</head>''; echo ''<body bgcolor="#FFFFFF" text="#000000">''; echo ''<div align="center">''; echo ''<p><img src="../images/logocir3.gif" width="120" height="123"> </p>''; echo ''<p><b><font size="5" color="#0000FF" face="Arial, Helvetica, sans-serif">The ''; echo ''The Company</font></b></p>''; echo ''<p><font size="4" color="#0000FF" face="Arial, Helvetica, sans-serif"><b><i>Customer Access</i></b></font></p>''; echo ''<form name="form1" method="post" action="index.php">''; echo ''<p> <font size="3" face="Arial, Helvetica, sans-serif">Username:</font> ''; echo ''<input type="text" name="USER_ID" maxlength="15">''; echo ''</p>''; echo ''<p><font size="3" face="Arial, Helvetica, sans-serif">Password: </font> ''; echo ''<input type="PASSWORD" name="PASSWORD" maxlength="15">''; echo ''</p>''; echo ''<p><input type="submit" name="Submit" value="Login"></p>''; echo ''</form>''; echo ''<p>&nbsp;</p>''; echo ''</div>''; echo ''</body>''; echo ''</html>''; exit; } elseif ( ($BEENHERE == 1) && (isset($FIRST)) && (isset($PASSWORD)) && (isset($ACCESS_KEY)) && (isset($USER_ID)) && (isset($LAST)) && (isset($conn)) && (isset($CUSTOMER_NAME)) ) { return (TRUE); } else { // Connect to database unset($conn); $conn = oci_connect($SYS_DBUSER,$SYS_DBPASSWORD,$SYS_DB); // Generate sql statement $loginsql = oci_parse($conn,"SELECT FIRST_NAME,LAST_NAME,CUSTOMER_NAME,ACCESS_KEY,TRANSPORTATION,WAREHOUSING,MYACCOUNT FROM WEB_USERS WHERE USER_ID = SUBSTR(UPPER(''$USER_ID''),1,15) AND PASSWORD = SUBSTR(UPPER(''$PASSWORD''),1,30) AND ENABLED = ''Y''"); // Execute statement oci_execute($loginsql,OCI_NO_AUTO_COMMIT); // Retrieve number of rows for authentication $nrows = oci_fetch_all($loginsql,$results); // Database Authenticate if ( $nrows != 1 ) { // Display if login fails unset($USER_ID); unset($PASSWORD); unset($FIRST); unset($LAST); unset($ACCESS_KEY); unset($conn); unset($BEENHERE); unset($CUSTOMER_NAME); unset($WAREHOUSING); unset($TRANSPORTATION); unset($MYACCOUNT); echo "<H1>Login Failure - Please Check Your Password AND/OR Username</H1><BR>"; echo "<A HREF=/"$PHP_SELF/"><H3>Try Again</H3></A>"; // Close used resources oci_free_statement($loginsql); oci_close($conn); exit; } else { // Assign login information to global variables unset($FIRST); unset($LAST); unset($ACCESS_KEY); unset($BEENHERE); unset($CUSTOMER_NAME); unset($WAREHOUSING); unset($TRANSPORTATION); unset($MYACCOUNT); $FIRST = $results[''FIRST_NAME''][0]; $LAST = $results[''LAST_NAME''][0]; $CUSTOMER_NAME = $results[''CUSTOMER_NAME''][0]; $ACCESS_KEY = $results[''ACCESS_KEY''][0]; $TRANSPORTATION = $results[''TRANSPORTATION''][0]; $WAREHOUSING = $results[''WAREHOUSING''][0]; $MYACCOUNT = $results[''MYACCOUNT''][0]; $BEENHERE = 1; // Close used resources oci_free_statement($loginsql); oci_close($conn); } } ?>

Aquí están mis configuraciones de php en un archivo png: http://i.imgur.com/7c8BzZG.png?1



Muchas cosas para arreglar en tu código:

  1. Como dijo joemurphy, para verificar si el formulario ha sido enviado:

    if (!isset($_POST)) {....}

  2. No use muchas declaraciones de echo para mostrar HTML. Cierre su etiqueta PHP ( ?> ) Y simplemente envíe el código HTML como de costumbre. Luego, cuando haya terminado con el HTML, agregue una etiqueta de apertura de PHP ( <php ) y continúe con su código PHP.

  3. Verifique los valores en $_SESSION con

    if (isset($_SESSION[''USER_ID''])){...}

    Si necesita un valor específico:

    if (isset($_SESSION[''USER_ID'']) && $_SESSION[''USER_ID''] == 1){...}

  4. No necesita establecer valores ficticios para inicializarlos en sesión o desarmarlos antes de configurarlos. Configúrelos solo cuando tenga los valores adecuados para ellos, luego desactívelos al cerrar la sesión. Por lo tanto, elimine la sección "Iniciar o continuar sesión registrando variables".