• Feed RSS
Mostrando entradas con la etiqueta php. Mostrar todas las entradas
Mostrando entradas con la etiqueta php. Mostrar todas las entradas
Después de mucho tiempo de publicar el proyecto que tengo entre manos, y que por desgracia todavía no he podido centrarme del todo, voy a subir los archivos para que veáis como se puede hacer, ya que muchos me habéis preguntado por ellos.

A continuación podéis descargar los archivos para obterner datos de un gamertag de XBOX360:

Descargar archivos XBOX
Puesto que hace poco adquirí una consola XBOX360, me dió por mirar si existia alguna aplicación para Facebook/Android/iOS que te avisará cuándo un amigo se conectara, que pudieras visitar tu perfil, comparar logros... Como la web de xbox.com, pero desde tu Facebook o móvil.

Mi primer paso a sido investigar como puedo obtener los datos del gamertag. Me llevé un pequeño chasco al enterarme que no están disponibles todos los datos del gamertag, ya que para ello Microsoft debe darte una cuenta de desarrollador, y cuesta bastante que te la den. Pero bueno, aún así continue investigando y preguntando a amigos. Gerard me comentó que el ya había investigado antes y me pasó un trozo de código.

A partir de eso empecé a programar y he conseguido lo siguiente:

Primera versión (Gerard) la podéis ver aquí: XBOX360 v1

Segunda versión la podéis ver aquí: XBOX360 v2

Y os estaréis preguntando ¿en qué consiste esto...? Pues bien, lo que hacen estos dos "aplicativos web", es mediante una consulta, te devuelve una cadena JSON con toda la información de ese gamertag. JSON tiene un comportamiento casi idéntico que un array. Por lo tanto a través de la información devuelta podemos saber el estado del gamertag (conectado o sin conexión), su imagen, los últimos juegos que ha jugado, los logros obtenidos en esos juegos...

Como podéis ver en los links anteriores, la primera versión está mucho más desarrollada que la segunda. En la segunda podéis ver como es un JSON si os fijáis en el primer parágrafo. Poco a poco intentaré hacerlo un poco más interfície web y comentar las novedades que voy encontrando.
Con el siguiente codigo podréis comprimir un directorio y todo su contenido mediante PHP. Lo primero que debemos hacer es crear y abrimos un archivo zip, que se hará de la siguiente manera:
//Creamos el archivo
$zip = new ZipArchive();
if ($zip->open("nombre.zip", ZIPARCHIVE::CREATE)==TRUE) {
   //Si lo abre, es porque no existe ningun zip con ese nombre
   //Llamámos a la función para comprimir
   comprimirDirectorio($directorio, $zip);
   //Cerramos el archivo
   $zip -> close;
}
A continuación, explicaré que es lo que hace la funcion comprimirDirectorio($directorio, $zip):
//A la función le pasamos como parametro el directorio y el archivo zip
function comprimirDirectorio($dir, $zip) {
   //Primero comprabamos que sea un directorio
   if (is_dir($dir)){ 
      //Por cada elemento dentro del directorio
      foreach (scandir($dir) as $item) { 
         //Evitamos la carpeta actual y la anterior
         if ($item == '.' || $item == '..') continue;
         //Si encuentra una que no sea las anteriores,
         //vuelve a llamar a la función, con un nuevo directorio
         comprimirDirectorio($dir . "/" . $item, $zip);
      }
   }else{
      //En el caso de que sea un archivo, lo añade al zip
      $zip->addFile($dir);
   }
}
Con esto deberíamos tener bastante para comprimirlos. Recordad que el archivo zip, se guardará en el directorio raiz del $directorio que le indiquéis a la hora de comprobar si se puede abrir.
Para los que trabajáis con bases de datos, y queréis subir datos masivamente leyendo ficheros CSV con PHP, a continuación os explicaré como hacerlo.

Primero para asegurarnos que el fichero que nos han subido (mediante un input file) sea de extensión CSV, comprobaremos su extensión de la siguiente manera:
//Obtenemos la extensión
$ext = substr($_FILES['name_input']['name'], strrpos($_FILES['name_input']['name'], '.')+1);
//en el name_input pondremos el name que le hayamos puesto al input file
//y la comparamos con la del archivo que nos han pasado
if ($ext != "csv"){
   printf("Archivo no válido");
}
En el caso de que nos envíen un archivo CSV, lo abriremos y consultaremos su información de la siguiente manera:
//La opción r indica que el archivo se abre como sólo lectura
$file = fopen($_FILES['name_input']['tmp_name'], "r");
//No saldrá del bucle hasta que no haya más líneas en el archivo CSV
while (($info = fgetcsv ($file , ";")) != FALSE ) {
   //Comprobamos la información linea a linea con el for each
   foreach($info as $linea) {
      echo $linea;
      //Para separar los datos utilizamos la función explode
      $array = explode(";", $linea);
      //Y accederemos a los valores de la siguiente manera
      echo $array[0];
   }
}
Y con esto bastaría, lo único que debemos hacer para insertarlos en la base de datos será, hacer las comprobaciones necesárias de los datos, y insertarlos en la tabla correspondiente.

Más opciones del fopen | fopen Manual
Funciones | explode Manual
A continuación tenéis el código para coger los datos de un formulario y enviarlos por email. En este caso, doy por supuesto que tendremos un formulario que en su action, llame al archivo php que contiene el siguiente código:
//En este apartado irán todos los campos del formulario
$nombre = $_POST['nombre'];
$mail = $_POST['mail'];
$asunto = $_POST['asunto'];
$msg = $_POST['mensaje'];

//Aquí ponemos el email en el que llegarán estos mensajes
$email_destino = 'email@email.com'

//En el siguiente paso, montamos el cuerpo del mensaje
$cuerpo = "Formulario enviado\n";
   $cuerpo .= "Nombre: " . $_POST["nombre"] . "\n";
   $cuerpo .= "Email: " . $_POST["mail"] . "\n";
   $cuerpo .= "Mensaje: " . $_POST["msg"] . "\n";

//llamamos a la función phpmail()
mail($email_destino, $asunto, $cuerpo);
Para que todo esto funcione, tenemos que tener activada la función phpmail( ) y en el servidor dónde tenéis alojado vuestro dominio, que la tengan permitida.
Si estás trabajando en un proyecto dónde necesites tener usuarios logueados, a continuación te explicaré como iniciar sesión con cookies en php.

Lo primero que debemos tener es una conexión a la base de datos dónde tengas almacenada la información de los usuarios. Para ello utilizaremos un archivo de conexión, que será más o menos así:
<?php 
function Conectarse() 
{ 
   //servidor = direccion del servidor
   //user = usuario de la base de datos
   //pass = contraseña de la base de datos
   if (!($link=mysql_connect("servidor","user","pass"))) { 
      echo "Error conectando a la base de datos."; 
      exit(); 
   }
   if (!mysql_select_db("nombre_base_datos",$link)) 
   {  
      echo "Error seleccionando la base de datos."; 
      exit(); 
   } 
   return $link; 
}
?>
Lo único que hace esta función es comprobar que la conexión se realiza correctamente y devuelve el valor de conexión. En caso negativo, comunica mediante un echo que la conexión a fracasado.

El siguiente código, indica como guardar los datos del usuario (en caso de que le login sea correcto) y mantener la sesión:
El código que os pongo a continuación, cierra la sesión del usuario pasado 'x' tiempo. Esta en lenguaje PHP.

En el código suponemos que en el php que hace login en la web, tenemos una variable que almacena todos los datos. Para obtener el tiempo en el que inicias sesión, solamente hay que hacer lo siguiente en el código del login:
$_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");
Este es el código final:
if(isset($_SESSION['usuario'])){
   //Obtenemos la fecha de ultimo acceso
   $fechaGuardada = $_SESSION['ultimoAcceso']; 
   //Obtenemos la fecha actual
   $ahora = date("Y-n-j H:i:s"); 
   $tiempoTranscurrido = (strtotime($ahora)-strtotime($fechaGuardada);
   //Substituimos x por el tiempo que queramos (en segundos) 
   if($tiempo_transcurrido >= x) {
      session_destroy();
      //Volvemos a la página principal o a la del login
      header("Location: index.php");
   } else {
      $_SESSION['ultimoAcceso'] = $ahora; 
   }
}
Si queréis modificar el formato de la fecha en PHP.net encontraréis más información.
0
Si queréis montaros un servidor en vuestra propia casa, para crear páginas webs o para manejar bases de datos, a continuación os explicamos como hacerlo. Para ello, deberías instalar los siguientes paquetes , bien a través de consola, o para los usuarios que no conocen muy bien este medio, a través del Gestor de Paquetes Synaptic (Sistema -- Administración)
  • Apache2
  • Mysql-client
  • Mysql-server
  • Php5
  • Php-gd
  • Phpmyadmin
  • mysql-admin
Durante la instalación nos pedirá las contraseñas para las bases de datos. Cuando nos pregunte que servidor queremos administrar elegimos Apache2.

Una vez instalados todos estos paquetes, no hará falta conectarse con el servidor, ya que estaremos automáticamente conectados.
nombre@usuario:~# sudo /etc/init.d/apache2 stop //parar el servidor
nombre@usuario:~# sudo /etc/init.d/apache2 start //iniciar el servidor
Los archivos están en el directorio: /var/www/ y para acceder vía web se hace a través de http://localhost/


Fuente | Álvaro Felipe