UsandoPHPenNetBeans

Usando NetBeans IDE Early Access for PHP

[[{TableOfContentsTitle=TablaDeContenidos} | {TableOfContents title='Tabla de contenidos'}]]

Para crear una aplicacion PHP en NetBeans, debemos tener configurado previamente un sistema WAMP (Windows + Apache + MySQL+ PHP) o LAMP (Linux + Apache + MySQL + PHP)

Creando un proyecto

Entramos al menú File > New Project ( o presionamos Shift + Ctrl + N)

Image:nb6-php5-01_UsandoPHPenNetBeans.jpg

Clic en Next. Luego nos preguntará el nombre del proyecto, donde se guardará, y cómo se publicará.

Image:nb6-php5-02_UsandoPHPenNetBeans.jpg

Esta versión tiene una variante con la versión Plugin del NetBeans 6.0. Antes, todo se trabajaba en una sola carpeta (como en los proyectos java EE) y cuando se ejecutaba, todos los archivos que estaban dentro del proyecto (imágenes, paginas, y todo archivo) se copiaba a la carpeta del servidor. Si el proyecto contenía varios archivos, los copiaba todos, así el cambio solo se ha hecho en uno de ellos.

En este Early Access, podemos definir donde se ubicarán los archivos fuentes del proyecto. Podemos crear una carpeta que tendrá acceso del apache utilizando un Alias, podemos usar la misma carpeta que nos proporciona NB y dejamos que los copie al directorio htdocs del Apache cuando se ejecute, o lo ponemos directamente en la carpeta htdocs. Haremos esta última opción.

Para ello modificamos el valor del campo "Project sources"


Image:nb6-php5-02a_UsandoPHPenNetBeans.jpg

Asegurémonos que la carpeta sea la misma que se utilizará para publicar:

Esto es porque si se crea una carpeta dentro de htdocs, tomará el mismo nombre para publicarse en la web.

Clic en Finish.

Si quiere utilizar una carpeta para desarrollar y otra para publicar, entre a las propiedades del proyecto y haga esto

File:Php.jpg

Note que está la carpeta "Source Folder" donde estarán los archivos .php y todo lo necesario para su web. Esto es lo que editarás con el IDE. Y existe la carpeta indicada en "Copy to folder" que es donde se copiará cuando ejecute el proyecto.

Configurando la base de datos

Algo realmente bueno en la versión 6.1 de NetBeans es que viene configurado nativamente para conectarse al servidor MySQL.

Presionamos Ctrl+5 para visualizar el panel de Servicios. Vemos que solo tiene un nodo llamado "Databases". Desplegamos ese nodo y veremos la opción para conectarse a MySQL. Podemos ver las propiedades de este nodo para establecer la conexión al servidor MySQL, es decir, el usuario y la contraseña:


Image:nb6-php5-03_UsandoPHPenNetBeans.jpg

Image:nb6-php5-03a_UsandoPHPenNetBeans.jpg

Podemos crear una base de datos desde esa opción. Por ejemplo, creemos la base de datos "sistema". Ni bien se crea, nos pedirá crear una nueva conexión a esta base de datos (usuario, y contraseña). Al finalizar, podemos ver que se creó una nueva conexión en el árbol de "databases".

Image:nb6-php5-04_UsandoPHPenNetBeans.jpg

Creemos una tabla llamada "usuarios" y que tenga los campos:

  • id_usuario
  • contrasenia
  • nombre

Podemos hacerlo desde la opción de NetBeans "create table" y ejecutando un comando SQL:

create table usuarios(
       id_usuario varchar(20) not null primary key,
       contrasenia varchar(100),
       nombre varchar(100))

Refrescamos el árbol, y veremos la tabla recién creada:

Image:nb6-php5-05_UsandoPHPenNetBeans.jpg

Insertemos unos cuantos valores a nuestra tabla

insert into usuarios values ('diego','diesil','Diego Silva'), ('juanpe','perez','Juan Perez')

y pasemos a la siguiente fase.

Creando una página de inicio de sesión

Presionamos Ctrl + 1 para visualizar el proyecto. Ya existe un archivo index.php. Lo que crearemos será una página PHP, para ello hacemos clic derecho sobre el ícono "source files" y seleccionamos New > PHP Web Page.

¿Qué diferencia hay entre PHP Web Pages y PHP File? PHP no solo se ejecuta en web, también en consola como si fuera un script .bat o de shell de Linux. En ambos casos se tratan de archivos de textos con extensión .php. Pero NetBeans nos va ahorrar el trabajo de escribir los tags necesarios para una web. Así que si creamos un PHP Web Page, NetBeans nos creará un archivo .php con las etiquetas básicas de un HTML, además del scriptlet para PHP.

Crearemos nuestro PHP Web Page con el nombre "login_form". Este .php debe cumplir dos funciones:

  1. Mostrar el formulario de inicio de sesión
  2. Validar los datos ingresados en el formulario.

Esto no es una clase de PHP, así que de una vez mostraré el código de login_form.php

Recomiendo escribir el código, no copiar y pegar. Al escribir el código veremos como NetBeans nos ayuda en la escritura de la sintaxis, variables, y funciones del PHP.

<?php
$op=$_POST["op"]; //obtenemos el valor de la accion que se esta haciendo
if (isset($op) && $op=="login") //si tiene valor y es 'login'...
$ok=validar_ingreso(); //.. validamos el ingreso
//sino.. mostrar el formulario
//$ok tendra TRUE si se logeo correctamente
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<h1>Inicio de sesion</h1>
<?php if($op && !$ok){ //si no se logeo correctamente, mostrar un mensaje de error
 print("Usuario o contraseña errónea");
} ?>
<form method="post" action="<?php print($_SERVER["PHP_SELF"]);?>">
<input type="hidden" name="op" value="login"/>
usuario:<input type="text" name="usuario"/><br/>
contraseña: <input type="password" name="contrasenia"/><br/>
<input type="submit" value="Entrar"/>
</form>
</body>
</html>
<?php //se pueden poner scriplets en cualqueir parte del php
function validar_ingreso(){
$usuario=$_POST["usuario"]; //obtengo el parametro usuario del formulario...
$contrasenia=$_POST["contrasenia"]; //... y la contrasenia
$conn=mysql_connect("localhost", "root", "adminadmin") or die (mysql_error($conn)); //nos conectamos a la base de atos
mysql_select_db("sistema", $conn) or die (mysql_error($conn)); //cambiamos de base de datos
//creamos un comando SQL, notar que si pongo comillas dobles, el valor de las variables
//   son interpretadas como parte de la cadena
$query="SELECT * FROM usuarios WHERE id_usuario='$usuario' AND contrasenia='$contrasenia'";
$res=mysql_query($query, $conn) or die (mysql_error($conn)); //ejecuto el comando

if ($res ){ //.. si se ejecuto correctamente, el valor de $res no es falso

 if ($reg=mysql_fetch_object($res)){ //obtengo todo el registro como un objeto
     session_start(); //inicio las variables de sesion...
     $_SESSION["usuario"]=$reg; //..  y almaceno el valor del objeto en la sesion
     header("Location: index.php"); //y redirecciono al index de la aplicacion
     mysql_close($conn);// cierro la conexion a la base de datos
     return true; //termino todo correctamente
 }
}
mysql_close($conn);// cierro la conexion a la base de datos
//si no devuelvo nada, la funcion retornara false.
}
?>

Bueno, esto hace el logeo, ahora la parte más interesante debería ser la página index.php Si no se ha iniciado sesión, deberá reenviar al formulario de inicio de sesión, y si ya inicio sesión, debería mostrar el nombre.

Hemos visto que en login_form.php, después de validar el usuario se guarda un objeto en una variable de sesión llamada "usuario". Pues bien, lo que haremos será verificar si existe esa variable de sesión de tal manera obtener el objeto que guardamos y mostrar el nombre del usuario que acaba de iniciar sesión.

Este es el contenido del index.php

<?php session_start();
$reg=$_SESSION["usuario"];
if (!isset($reg))
header("Location: login_form.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<?php

print("Hola ".$reg->nombre);
?>
</body>
</html>

Ejecutando el proyecto

Ejecutemos el proyecto y tratemos de ingresar a http://localhost/PhpProject1/. Automáticamente nos reenviará al formulario de inicio de sesión

Image:nb6-php-run1_UsandoPHPenNetBeans.jpg


Ingresamos los valores correctos para iniciar una sesión de usuario según nuestra tabla usuarios, y veremos que nos redirecciona al index.php y nos muestra el nombre del usuario.


Image:nb6-php-run2_UsandoPHPenNetBeans.jpg

Y si tratamos de abrir una nueva ventana (del mismo navegador) e ingresamos a la misma dirección web, ya no nos mostrará el formulario de inicio de sesión...

Image:nb6-php-run3_UsandoPHPenNetBeans.jpg

... porque ya iniciamos la sesión en la otra ventana del mismo navegador

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo