Ejecutar porción de código php - Forum

Forum Navigation
You need to log in to create posts and topics.

Ejecutar porción de código php

Hola @luishp,

Consulta... Sería posible ejecutar algo así como esto en vnw usando código php?

get_current_user();
$username = get_current_user();
echo $username;

El problema es que puedo hacerlo con python, pero me da muchos dolores de cabeza las librerías en mi PC personal y no puedo hacer funcionar algunas. Básicamente necesitaría obtener el usuario de os y pasarlo a una variable usando alguna funcion desde VNW.

Saludos y gracias,

Sam.

Hola @lesanch,

Si, es posible ejecutar cualquier código PHP y recibir una respuesta del mismo. Lo más sencillo es utilizando un formulario pero hay en realidad varias posibilidades de hacerlo.
Echa un vistazo al ejemplo que encontrarás en Mis Documentos/VisualNeoWeb/Sample Apps/Form Submit.
Fíjate que en esa misma carpeta está el código .php que se ejecuta en el servidor.

Saludos!

Hello all, please could be so kind someone and help me to verify if this portion of code is OK ? i don't know anything  about php and i'm doing this to the blows. it's an ldap server auth

Hola a todos, alguien sería tan amable de ayudarme a revisar si esta porción de código está bien ? perdón pero yo no tengo idea de PHP y estuve tratando de hacer esto a pedazos. Es para autenticar contra un ldap.

 

<?php

//Header required when app and php are of different origins
header("Access-Control-Allow-Origin: *");

# Get data from fields
$user = $_POST["user"]; // ldap rdn or dn
$password = $_POST["password"]; // associated password

// connect to ldap server
$ldapconn = ldap_connect("ldap_server_address")
or die("Could not connect to LDAP server.");

if ($_SERVER["REQUEST_METHOD"] === "POST") {
if (isset($_POST["user"]) && isset($_POST["password"])) {
if ($ldapconn)
{
// binding to ldap server
$ldapbind = ldap_bind($ldapconn, $user, $password);

// verify binding
if ($ldapbind)
{ echo "LDAP bind successful..."; }
else { echo "LDAP bind failed..."; }
}
}
else { $result = "INVALID REQUEST DATA"; }
} else { $result = "INVALID REQUEST DATA"; }

echo $result;

 

Saludos,

Regards,

Sam

@lesanch, al menos la sintaxis parece correcta. Eso si, acuérdate de guardar el archivo con extensión .php y añadir las etiquetas de inicio y fin de código PHP. El formulario tienes que enviarlo mediante "method" POST. Con las etiquetas y bien indentado, quedaría así:

<?php
header("Access-Control-Allow-Origin: *");
# Get data from fields
$user = $_POST["user"]; // ldap rdn or dn
$password = $_POST["password"]; // associated password

// connect to ldap server
$ldapconn = ldap_connect("ldap_server_address")
or die("Could not connect to LDAP server.");

if($_SERVER["REQUEST_METHOD"] === "POST") {
 if(isset($_POST["user"]) && isset($_POST["password"])) {
  if($ldapconn){
   // binding to ldap server
   $ldapbind = ldap_bind($ldapconn, $user, $password);

   // verify binding
   if($ldapbind){ 
    echo "LDAP bind successful...";
   }else{
    echo "LDAP bind failed...";
   }
  }
 }else{
  $result = "INVALID REQUEST DATA";
 }
}else{
 $result = "INVALID REQUEST DATA";
}
echo $result;
?>

 

Saludos!

Hola @Luihp,

Gracias por la respuesta. En realidad el problema que tenía era que según la combinación no hacía lo que espera, por ejemplo, si pongo el username pero no el password o si ambos NO tenían datos, el server response es LDAP BIND SUCESFULLY, uhmm... eso no debería, pero si pongo el username y el password mal me dice que tiene problemas de credenciales, en fin algo no andaba bien quizás, pero lo resolví poniendo la validación obligatoria desde el frontend o sea como normalmente debe ser, deben estar presentes ambos campos con valores declarados para la conexión. Igualmente pongo el código que me corregiste.

Saludos y gracias,

Sam

Buenas tardes.

He buscado dentro del ejemplo el codigo del boton submit, que es quien finalmente lanza la ejecución del PHP pero no la encuentro en ninguna parte. Como se hizo ? Como sabe el sistema que php es el que tiene que ejecutar ?

Muchas gracias, por esta y por todas las ayudas que me has brindado.

Carlos.

@carlos-alberto-montoya-cano como en este caso el código php se va a ejecutar al enviar los datos del formulario al servidor, sólo necesitas indicarle al formulario a que script enviar los datos. Esto se hace con la propiedad action del formulario. El botón submit no necesita en relaidad ninguna programación porque al pulsarlo los datos simplemente se envían a la dirección especificada en action.

El que sí puede tener programación es el propio formulario. Para más información, fíjate en el ejemplo FormSubmit que acompaña a VisualNEO Web.

Para entender mejor como funcionan los formularios en HTML echa un vistazo a esta página:
https://www.w3schools.com/html/html_forms.asp

Saludos!

Muy bien luis. Muchas gracias, ya modificado y probado. Me funciona muy bien.

 

Gracias

Respecto a esto, últimamente he utilizado PHP con Iframe para obtener la resolución del mismo, aunque el método del formulario es mejor para enviar datos, el iframe referenciando el php da como resultado el php resuelto. Aunque le he encontrado un problema, y es que por seguridad no podemos adquirir nada de este iframe (por ejemplo el texto o el html con las acciones correspondientes). En fin, también se puede configurar el form con la opción Get y referenciar al php...

@palamar fíjate que también es posible insertar código php diréctamente dentro del HTML de un Container en VisualNEO Web. Una vez compilado el proyecto, eso sí, habrá que renombrar index.html a index.php.
La ejecución del código php se realizará en el momento en que se carga la aplicación.

Saludos.

Interesante @luishp, había intentado pero supongo que no funcionó debido al cambio de extensión, estaré probándolo.