Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - iStocker

Páginas: [1] 2
1
Debido a un tópico externo creado hace poco donde un usuario explicaba que quería crear una manera de hacer un sistema para actualizaciones automáticas, después de orientarle un poco me intrigo el hecho de crear uno, y así lo he hecho... Les dejo la clase abajo y subiré un pequeño ejemplo del funcionamiento.

Tópico: [Ayuda] Quiero crear un sistema de actualizaciones

El sistema tiene un funcionamiento simple, hace una consulta a un sitio externo (servidor) donde se encuentra un archivo que imprime la versión más actualizada, la compara con la instalada y en caso de haber una nueva versión descarga un archivo ZIP y la descomprime en una carpeta raíz, toda la clase viene explicada en comentarios.'

class.update.php
[spoiler]
Código: (php) [Seleccionar]
<?php
/**
* @author  iStocker <skype:DeathsInTheSky> [url]http://kekomundo.com/foro/index.php?action=profile;u=12804[/url]
* @package  AutoUpdate
* @version  1.0
**/

class Update
{
public  $_currentVersion;
public  $_actualVersion;
public $_updateUrl;
public $_updateFile;
public $_installDir;
public  $_downloadDir;
public  $_deleteZip;

/**
* @param  string  $cVersion  Versión del script
* @param  string  $uUrl  URL del servidor
* @param  string  $iDir  Directorio raíz de la instalación
* @param  string  $uFile  Fichero del servidor que tiene la versión actual
* @param  string  $uCarpet  Directorio donde se alojará el archivo descargado (ZIP) según el directorio raíz de instalación
* @param  bool  $dZip  Borrar el fichero ZIP al final de la instalación
**/
public function __construct($cVersion$uUrl$iDir$uFile 'updateFile.php'$uCarpet 'upload'$dZip true)
{
$this->_currentVersion $cVersion;
$this->_installDir $iDir;
$this->_updateFile $uFile;
$this->_deleteZip $dZip;

$this->setDownloadDir($this->_installDir DIRECTORY_SEPARATOR $uCarpet DIRECTORY_SEPARATOR);
$this->setUpdateUrl($uUrl);
}

/**
* @param  string  $dDir  Directorio donde se alojará el archivo descargado (ZIP) según el directorio raíz de instalación
*
* @return  void  Comprueba que exista el directorio, caso contrario lo crea.
**/
public function setDownloadDir($dDir)
{
if(!file_exists($dDir))
mkdir($dDir0777true);

$this->_downloadDir $dDir
}

/**
* @param  string[url]  URL del servidor de descarga.
*
* @return  void  Comprueba la legitimidad de la url.
**/
public function setUpdateUrl($updateUrl)
{
if(!filter_var($updateUrlFILTER_VALIDATE_URL))
throw new Exception('URL no válida ' $updateUrl);

$this->_updateUrl $updateUrl;
}

/**
* @return  boolean  Comprueba las versiones.
**/
public function checkVersion()
{
$this->_actualVersion file_get_contents($this->_updateUrl $this->_updateFile);

if(!$this->_actualVersion)
throw new Exception('El archivo que intentas consultar no existe en la URL ' $this->_updateUrl . $$this->_updateFile);

return version_compare($this->_currentVersion$this->_actualVersion'<');
}

/**
* @return  boolean  Comprueba si ha sido descargado el fichero anteriormente, caso contrario lo descarga y lo almacena.
**/
public function updateDownload()
{
if(file_exists($this->_downloadDir $this->_actualVersion '.zip'))
return true;

$tmpRead file_get_contents($this->_updateUrl $this->_actualVersion '.zip');

if(!$tmpRead)
throw new Exception('El fichero ZIP no se encuentra en el servidor. Intenta de nuevo más tarde.');

$tmpDir = new SplFileInfo($this->_downloadDir $this->_actualVersion '.zip');
$tmpObj $tmpDir->openFile('w'); 

if(!$tmpDir->isWritable())
throw new Exception('Imposible crear fichero descargado por errores de escritura');

$tmpObj->fwrite($tmpRead);

unset($tmpRead);
unset($tmpDir);
unset($tmpObj);

return true;
}

/**
* @return  boolean  Descomprime el archivo y lo elimina en caso de así haber sido configurado.
**/
public function unZip()
{
$tmpZip = new ZipArchive;

if(!$r $tmpZip->open($this->_downloadDir  $this->_actualVersion '.zip'))
throw new Exception('Imposible descomprimir archivo ZIP');

$tmpZip->extractTo($this->_installDir);
$tmpZip->close();

if($this->_deleteZip)
$this->deleteZip();

return true;
}

/**
* @return  boolean  Comprueba si el archivo existe, caso contrario lo elimina.
**/
public function deleteZip()
{
if(!file_exists($this->_downloadDir  $this->_actualVersion '.zip'))
return true;

return unlink($this->_downloadDir  $this->_actualVersion '.zip');
}
}
?>
[/spoiler]

Ejemplo de uso: iStocker/Update · GitHub

Como se puede notar la clase tiene diferentes métodos todos públicos, para poder trabajarla de una forma dinámica y poder utilizar todas las funciones de forma diferente.

Fuente: http://kekomundo.com/foro/index.php?topic=413734.0

Saludos.

2
General / Despejar x de una ecuación.
« en: 17 de Octubre de 2013, 07:40:51 am »
Hola, bueno, necesito despejar x de la ecuación

a = (5x+y)/z

Donde ................ z =( x + y) = 313 ........................... a = 4.654952.

Sustituyendo nos quedaría

4.654952 = (5x+y)/313

Lo intenté hacer despejando y luego por método de sustitución y no me dio de ninguna manera, la verdad que no me da para más el tiempo si no seguiría intentando, les agradecería bastante su ayuda.

Saludos.

3
JavaScript / [JS] Función showResult();
« en: 08 de Agosto de 2013, 10:36:02 am »
Bueno, acabé de hacer una función que cree diversos elementos DOM para mostrar múltiples errores como elementos hijos de un padre elemento, creo que me di a entender. Soy algo nuevo con la sintaxis de JavaScript y lo hice lo mejor que pude, la publico para críticas constructivas y consejos.

Código: [Seleccionar]
/**
 * @author iStocker <skype:DeathsInTheSky>
 * @package showResult
 * @category Ok / Error
 * @version 1.2
 **/


/**
 * Mostrar diferentes resultados
 *
 * @param array|string data >> En caso de ser array debe de ser bidimensional con el mensaje y si es un error o no.
 * >> En caso de ser string debe de contener el mensaje del resultado.
 * @param bool error >> Si es un error o no.
 **/
function showResult(data, error)
 {
  var response = document.getElementById('response');

  if(data instanceof Array)
  {
  var box = new Array();
  var error = new Array();
 
  for(i = 0; i <= data.length; ++i)
  {
      box[i] = document.createElement('div');
     
      if(data[i][1])
      {
          box[i].setAttribute('class', 'message error');
      }
      else
      {
          box[i].setAttribute('class', 'message ok');
      }
      error[i] = document.createTextNode(data[i][0]);

    response.appendChild(box[i]);
    box[i].appendChild(error[i]);
  }
  }
  else
  {
  var box = document.createElement('div');

  if(error)
{
box.setAttribute('class', 'message error');
}
else
{
box.setAttribute('class', 'message ok');
}

var error = document.createTextNode(data);

response.appendChild(box);
box.appendChild(error);
}
}

Ejemplo de uso
Código: [Seleccionar]
<html>
<head>
<title>Prueba de error</title>
<script src="showResult.js"></script>
<style>
.message{
border: 1px solid rgba(000,000,000,0.1);
color: white;
text-align: center;
box-shadow: inset 0px 0px 10px rgba(000,000,000,0.1);
text-shadow: 0 1px 0 rgba(000,000,000,0.2);
text-transform: uppercase;
margin:10px 0 10px 0;
padding: 6px 4px 5px 4px;
border-radius:2px;
}
.message:hover{
transition: 2s;
opacity:.82;
}
.ok.message{
background-color: rgb(59, 168, 0);
}
.error.message{
background-color: rgb(235, 4, 4);
}
</style>
<script>
// Array
var response = [['correcto',false],['error', true],['correcto', true]];
showResult(response);

// String
showResult('False con string:D', false);
showResult('Correcto con string', true);
</script>
</head>
<body>
<div id="response">
</div>
</body>
</html>

Espero y les sirva de algo ñ.ñ

4
Linux Ubuntu
# ELIGIENDO UNA DISTRIBUCIÓN
Pero qué lío, comparado con Windows & siendo yo un usuario nativo del mismo SO, fue algo un poco confuso, si tomamos en cuenta que las distribuciones de Windows se limita a 3 distribuciones que serían; Home, Professional & Server.

Si empezamos a ver un poco sobre las distribuciones de Linux encontraremos entre ellas: Ubuntu; la más famosa porque es uno de los SO más fáciles de ésta rama, Fedora, Debian, etcétera... & de éstas distribuciones, incluyendo ése largo & extenso etcétera se encuentran otras distribuciones que se basan de las primeras distribuciones, & hay otras distribuciones que se basan en dos o más distribuciones... En cuestión, podemos encontrar un sin fin de distribuciones... Cada una con un enfoque diferente a otra & haciendo que un usuario experimentado pueda utilizar algo más a su gusto, éso es algo de lo que más me gusta de Linux, además de que igual manera uno mismo puede experimentar con el source.

Como es lógico para los principiantes, entre los cuales me incluyo, nos recomiendan empezar con Ubuntu, un SO operativo con una bonita interfaz gráfica & sencillisimo, en un margen de comparación con las demás distribuciones... Yo me decidí por esta sin pensar, así que me di manos a la obra.

# DESCARGANDO EL .ISO
Ésto fue bastante sencillo, o por lo menos en la distribución que yo elegí (Ubuntu, para ésos de un plazo de memoria corta), no fue nada complicado la verdad... Creo que ésto es lo más sencillo de todo, así que lo dejaré así...

# CREANDO UNA MEMORIA USB BOOTEABLE
El nivel de complicación que tiene esto de una escala del 1 al 10; sería un 6, debido a que en la distribución de Ubuntu te dan un tutorial muy bien explicado en la misma página, además de un programa que prácticamente hace todo por tí, mi problema comenzó aquí, a pesar de que fuera algo tan sencillo e irrelevante...

Primeramente fue el el periodo de tiempo estimado por el descompresor del .iso lo que me jodió, & bien jodido... Era algo así como 2 semanas de espera, sólo para descomprimir, decidí hacer algo mucho más lógico & factible, cancelé la descompreción & reinicié en modo seguro con funciones de red, que el chat no me debe de faltar, fue una mejora de velocidad demasiado obvia, de 2 semanas sólo para descomprimir el archivo a 7 minutos, hasta aquí todo me había parecido relativamente sencillo, lo siguiente fue una pesadilla...

Mi memoria USB al parecer no quería bootear la guía de instalación de Ubuntu — JODER —, fue algo bastante frustrante, porque ya después de haber reiniciado una cantidad de veces (porque no me acordaba de con cual tecla iniciaba ésa pantallita para bootear hasta que le atiné), ahora venía & me jodia que no podía instalar el sistema operativo porque había un error, que se lo derivé a mi memoría, sin saber, & sigo con la misma idea...

Tuve que pasar a mi opción b — viable & que pensaba infalible —, vaya error el mío... & aunque los siguientes problemas & errores se debieron más en mis hadware, como me jodieron...

# OPCIÓN B: Comprar un DVD vírgen
Mi primera opción para comprar éste DVD que sería mi salvación fue en el ciber café que me queda cruzando la calle; algo bastante bueno para mi, debido a que me queda demasiado cercas & además siempre tienen un excelente servicio... Llegando al ciber café me percaté de algo al empujar la puerta; el dueño del local no se encontraba en el mismo, cosa que no me sorprendió — Jamás está & yo sigo pensando que tienen un excelente servicio, adivinen como serán los demás —, bueno; decidí ir al segundo lugar más cercano que me quedaba, & que no era tan probable que tuvieran ése santificado & maldito DVD, & como lo imaginé, no tenían ni un mísero DVD en su inventario — JODER & recontra JODER —.

Vayamos a un lugar más lejano, & por lo flojo que soy decidí tomar la troca e irme en ella, había un tránsito al final de la calle, & como no tengo licencia tuve que ir a pie — JODER, JODER & más JODER —, 10 minutos de caminata en colina, lo único bueno de ése viaje fue el clima, perfecto...

Al ir pasando por un parque donde había muchos chavalines jugando & el parque estaba en unas excelentes condiciones que yo hubiera deseado en mi niñez, alcancé a percibir un animal cruzando la calle, algo pequeño como un ratón o un gato recién nacido, & pude contemplar con toda definición & detalle como era atropellado & prácticamente explotaba — HIPERJODER —... Dato que no a muchos lectores les gusatará leer, pero en fin, era algo que tenía que contarles...

Llegando al local, de muy buen presentación & de igual manera con un excelente servicio, no tuve ningún problema al adquirir el artículo, en el transcuro del local a mi casa en el camino me encontré con unos amigos de la secundaria — que ahora me caían tan mal como la leche agría —, lo único que hice fue decirle un "¿Qué onda?", a punto de llegar a mi casa, solo faltando cruzar una calle, me logré percatar de que el dueño del primer local (el ciber café) ya había llegado — Maldición —, pero éso sólo fue un texto de relleno, el verdadero problema fue al momento de llegar a mi casa...

# QUEMANDO EL .ISO EN EL DVD
Mi primer problema fue que no podía formatear el DVD para hacerlo un disco flash USB & así tener la posibilidad de reescribirlo en un futuro, después de chorrocientos intentos me rendí & decidí quemar el .iso en el disco, & con mi bendita suerte fue que... tuve otro error, no podía porque la velocidad del escritura del disco era muy baja o muy alta... la velocidad era de x16, la normal en todos los DVD, así que probé a cambiarle a las otras opciones... Mismo & maldito error — JODEEEEEEEEEEER —, iría a comprar otro disco al ciber café que ya estaba abierto...

Por alguna extraña razón coincidí con el cnargado del local & pudé adquirir el artículo, otro disco practicamente igual, solo que el primero era un DVD-R & éste era un DVD+R... Antes de haber ido por el disco deje borrando el SO de la memoria, debido a que no me la booteaba & también estaba guardando mi copia de seguridad de mis archivos, llegue & reinicié el equipo por una actualización, al momento de encender mágicamente mi memoria estaba booteando... sin un ***** SO adentro, en éste preciso momento me quise volver chango mientras gritaba a los cuatro viendos; "¡RATAAAAAAS!", una expreción de enojo que me pegó un programa de televisión...

Decidí probar con el nuevo DVD a instalar mi precioso SO, la *****, la putísima madre, otra vez JODER, que tuve el mismo error, no le dí tanta importancia porque mi memoria USB ya estaba boteando, así que decidí reinstalar por segunda ocasión mi SO, todo parecía ir tan bien hasta que mis archivos se mezclaron con el SO, se instaló 3 o 4 veces en diferentes carpetas, me cambió el nombre de muchos archivos & carpetas con caracteres extraños que parecía ser un archivo temporal & tuve que reiniciar porque no podía detener el proceso ni siquiera con la consola de comandos ni PowerShell, que vendrían siendo lo mismo, pero el último la actualización del primero para Windows 7.

Formatee mi memoria USB, instalé de nuevo el SO & reinicié... ¡JODER! — Con toda la extención de la palabra & en mayúsculas— al parecer mi inicio de Windows estaba teniendo fallos, seguramente ocasionados por el programa que configura la memoria para ser booteable, tuve que esperarme unos 30 minutos a que se solucionará el problema automáticamente & en ése transcurso estaba llendo a revisar por la ventana si el ciber café no había cerrado, por si no podía bootear mi memoria USB, adivinen qué pasó... Efectivamente, ya no booteaba, así que me decidí a ir al ciber café a pedirle al dueño que me quemará el .iso en el DVD, & adivinen que había transcurrido en ése tiempo en el que intenté bootear mi USB, así es... el ciber café ya había cerrado — Por la recontra mil *****, ¡JODER! —.


# APLAZANDO LA INSTALACIÓN
Después de todo lo sucedido, mis faltas de ganas & todo el rollo decidí posponer todo éste lío para mañana, ya me quedé sin ideas & estoy casi seguro de que mi lector de discos no escribe información en los mismos, mi tipos de archivos de la memoria no me dejan bootear (FAT32) & no puedo formatear el tipo de archivos a NTFS por alguna razón, en éstos momentos, acepto cualquier tipo de idea que tengan...

Por hoy ha sido todo los que les tenía para comunicar, mañana veremos si abren el ciber café, si es que el destino, el universo, & mi vecina no conspiran para que tengan el ciber café abierto...

Un saludo & buenas noches/días/madrugadas/tus nalgas peludas/lo que sea.

Tópico original: http://kekomundo.com/foro/index.php?topic=298500.0

5
(POO) Programación Orientada a Objetos / Clase de usuarios [POO]
« en: 17 de Marzo de 2013, 23:19:56 pm »
Hola & bienvenidos a éste tópico donde les compartiré una clase que hice para un pequeño sistema de administración, éste lo he hecho yo desde el inicio hasta su fin, con la ayuda de SofoEB (Bryan Suero) al cual le agradezco su ayuda infinitamente.

Ahora, el sistema puede ser adaptado según sus necesidades, si no lo quieren editar tendrán que crear un primer archivo llamado MySQL.php, que aquí es donde se construye la conexión a la base de datos SQL usando la librería de MySQLi, desarrollado en POO. Seguido del código de MySQL.php les dejaré el de MySQL.Users.php.

Para usar la clase necesitan crear un archivo donde se cargue la configuración (que llamaré Config.php) & la clase, les dejaré un ejemplo al final, se llamará Init.php. El archivo Init.php (en mi caso) será un archivo global, que se incluirá en cada archivo que requiera funciones & la conexión MySQL o algo sobre la configuración.

MySQL.php

[spoiler]
Código: (php) [Seleccionar]
<?php
Class MySQL
{
public static $c;
public static $result = [&#39;error&#39;=>false, &#39;type&#39;=>&#39;Desconocido&#39;, &#39;description&#39;=>&#39;Respuesta desconocida.&#39;];

public static function Connect($Data)
{
self::$c = new mysqli($Data[&#39;hostname&#39;], $Data[&#39;username&#39;], $Data[&#39;password&#39;], $Data[&#39;database&#39;], $Data[&#39;port&#39;]);
}
}
?>
[/spoiler]

MySQL.Users.php
[spoiler]
Código: (php) [Seleccionar]
<?php
/**
* @author  iStocker [---] con ayuda de SofoEB [Bryan Suero].
* @package   Módulo de Clase POO [MDP]
* @category  Usuarios 
* @version  0.0.1
* @copyright No hay ningún copyright, éste contenido puede ser editado a gusto & publicado siempre & cuando se conserver los créditos de autor.
**/

class Users extends MySQL
{
public static function newUser($username$email$password)
{
if(isset($username$email$password))
{
$query parent::$c->query("SELECT id FROM users WHERE username = &#39;".$username."&#39; OR email = &#39;".$email."&#39;");
if($query->num_rows)
{
return parent::$result = [&#39;error&#39;=>true, &#39;type&#39;=>&#39;Nuevo usuario&#39;, &#39;description&#39;=>&#39;¡El nombre de usuario o e-mail ya están asociados a una cuenta existente!&#39;];
$query->free();
$query->close();
}
else
{
$query parent::$c->query("INSERT INTO users(username, email, password) VALUES (&#39;".$username."&#39;, &#39;".$email."&#39;, &#39;".md5($password)."&#39;)");
return parent::$result = [&#39;type&#39;=>&#39;Nuevo usuario&#39;, &#39;description&#39;=>&#39;¡Felicidades, el registro se ha hecho correctamente!&#39;];
$query->free();
$query->close();
}
}
else
{
return parent::$result = [&#39;error&#39;=>true, &#39;type&#39;=>&#39;Nuevo usuario&#39;, &#39;description&#39;=>&#39;¡Todos los campos son obligatorios!&#39;];
}
}

public static function UpdateUser($id$data)
{
if(isset($id$data))
{
foreach($data as $k => $v)
{
$query parent::$c->query("UPDATE users SET $k = &#39;$v&#39; WHERE id = &#39;$id&#39;");
}
if($query)
{
return parent::$result = [&#39;type&#39;=>&#39;Actualizar usuario&#39;, &#39;description&#39;=>&#39;¡La actualización se ha hecho con éxito!&#39;];
}
else
{
return parent::$result = [&#39;error&#39;=>true, &#39;type&#39;=>&#39;Actualizar usuario&#39;, &#39;description&#39;=>&#39;¡La actualización no se ha podido realizar!&#39;];
}
$query->free();
$query->close();
}
else
{
return parent::$result = [&#39;error&#39;=>true, &#39;type&#39;=>&#39;Actualizar usuario&#39;, &#39;description&#39;=>&#39;¡Debes de rellenar todos los campos!&#39;];
}
}

public static function DeleteUser($id)
{
if(isset($id))
{
$query parent::$c->query("DELETE FROM users WHERE id = &#39;".$id."&#39;");
if($query->num_rows)
{
return parent::$result = [&#39;error&#39;=>true, &#39;type&#39;=>&#39;Borrar usuario&#39;, &#39;description&#39;=>&#39;¡Se ha borrado el usuario con éxito!&#39;];
}
else
{
return parent::$result = [&#39;error&#39;=>true, &#39;type&#39;=>&#39;Borrar usuario&#39;, &#39;description&#39;=>&#39;¡El usuario no existe!&#39;];
}
$query->free();
$query->close();
}
else
{
return parent::$result = [&#39;error&#39;=>true, &#39;type&#39;=>&#39;Borrar usuario&#39;, &#39;description&#39;=>&#39;¡Debes de proporcionar toda la información necesaria!&#39;];
}
}

public static function UserLogin($ue$password)
{
if(isset($ue$password))
{
$query parent::$c->query("SELECT * FROM users WHERE (username = &#39;".$ue."&#39; OR email = &#39;".$ue."&#39;) AND password = &#39;".md5($password)."&#39;");
if($query->num_rows)
{
$userinfo $query->fetch_row();
$_SESSION[&#39;login&#39;] = true;
$_SESSION[&#39;id&#39;] = $userinfo[0];
$_SESSION[&#39;username&#39;] = $userinfo[1];
$_SESSION[&#39;email&#39;] = $userinfo[2];
$_SESSION[&#39;rank&#39;] = $userinfo[4];

return parent::$result = [&#39;type&#39;=>&#39;Login usuario&#39;, &#39;description&#39;=>&#39;¡Bienvenido al sistema!&#39;];
}
else
{
return parent::$result = [&#39;error&#39;=>true, &#39;type&#39;=>&#39;Login usuario&#39;, &#39;description&#39;=>&#39;¡Al parecer el nombre de usuario/e-mail no coinciden con la contraseña!&#39;];
}
$query->free();
$query->close();
}
else
{
return parent::$result = [&#39;error&#39;=>true, &#39;type&#39;=>&#39;Login usuario&#39;, &#39;description&#39;=>&#39;¡Todos los campos son obligatorios!&#39;];
}
}


public static function SelectUsers($type$where null)
{
if(isset($type))
{
$query parent::$c->query("SELECT ".$type." FROM users ".$where);
if($query->num_rows)
{
$i 0;
while($row $query->fetch_row())
{
$users[$i++] = $row;
}
return $users;
$query->free();
$query->close();
}
else
{
return parent::$result = [&#39;error&#39;=>true, &#39;type&#39;=>&#39;Usuarios&#39;, &#39;description&#39;=>&#39;¡El usuario no existe!&#39;];
}
}
else
{
return parent::$result = [&#39;error&#39;=>true, &#39;type&#39;=>&#39;Usuarios&#39;, &#39;description&#39;=>&#39;¡Debes de proporcionar toda la información necesaria!&#39;];
}
}
}
?>
[/spoiler]

Init.php
[spoiler]
Código: (php) [Seleccionar]
<?php
# Iniciamos las sesiones
session_start();

# Incluímos archivos vitales para el funcionamiento.
include &#39;Config.php&#39;;
include &#39;MySQL.php&#39;;
include &#39;MySQL.Users.php&#39;;

# Inicio de clases & estancias esenciales para el sistema.
MySQL::Connect($Config[&#39;MySQL&#39;]);
?>
[/spoiler]

Config.php
[spoiler]
Código: (php) [Seleccionar]
<?php
<?php
# Datos de conexión a la base de datos
$Config[&#39;MySQL&#39;] = 
[
&#39;hostname&#39; =>  &#39;127.0.0.1&#39;, /* URL de enlace MySQL (localhost/121.0.0.1)*/
&#39;username&#39; =>  &#39;root&#39;, /* Nombre de usuario (root) */
&#39;password&#39; =>  &#39;---&#39;, /* Contraseña de usuario */
&#39;database&#39; =>  &#39;---&#39;, /* Nombre de la base de datos */
&#39;port&#39;     =>  3306, /* Puerto de conexión (3306)*/
];

?>
[/spoiler]

Por el momento no les dejaré toda la documentación debido a falta de tiempo, así que tendrán que ir deduciendo su uso ustedes sólos, les dejaré las clases más complicadas para su uso.

Clase UpdateUser($id = int, $data = array)
Atributos
  • $id ~ Es la id del usuario a editar.
  • $data ~ es la información a editar, es un array.
Ejemplo de uso
[spoiler]
Código: (php) [Seleccionar]
<?php
if(isset($_POST[&#39;update&#39;]))
{
if ($_POST[&#39;username&#39;]) { $data[&#39;username&#39;]=$_POST[&#39;username&#39;]; }
if ($_POST[&#39;email&#39;]) { $data[&#39;email&#39;]=$_POST[&#39;email&#39;]; }
if ($_POST[&#39;password&#39;]) { $data[&#39;password&#39;]=md5($_POST[&#39;password&#39;]); }
if ($_POST[&#39;rank&#39;]) { $data[&#39;rank&#39;]=$_POST[&#39;rank&#39;]; }

if(is_array($data))
{
Users::UpdateUser($_POST[&#39;id&#39;], $data);
$result Users::$result;

if($result[&#39;error&#39;])
{
?>
<h1 style="font-color:red;">Error</1><br><b>Tipo</b> <?=$result['type'];?><br><b>Descripción</b> <?=$result['description'];?><br><?php
}
else
{
?>
<h1 style="font-color:green;">¡YEY!</1><br><b>Descripción</b> <?=$result['description'];?><br><?php
}
}
}
?>
[/spoiler]

Ésta clase no incluye mi sistema de rangos & permisos, además de que es una versión desactualizada.

6
Bueno, llevo bastante con éste problema & ya he recurrido a muchos amigos que saben de programación pero ninguno logró ayudarme así que me decidí a publicarlo aquí. El problema consiste en que realizo una consulta donde debería de devolver todos los registros en la tabla, el problema es que sólo devuelve uno, ya lo he hecho de muchas formas, pero siempre resulta en lo mismo, quisiera que revisarán el código que hice & pudieran ayudarme.

Gracias de antemano.

https://gist.github.com/264631ec7c61c06d59cc
Código: (php) [Seleccionar]
public function Furnis($c_id)
  {
if(isset($c_id))
{
$furnis = self::$c->query("SELECT * FROM items WHERE c_id='".$c_id."'");
 
if($furnis->num_rows)
{

$row = $furnis->fetch_array(MYSQLI_NUM);

foreach($row as $k => $v)
{
$efurnis[] = $v;
}
 
return $efurnis;
$furnis->free();
}
else
{
return $error = true;
}
}
else
{
$furnis = self::$c->query("SELECT * FROM items ORDER BY id DESC");
$row = $furnis->fetch_array(MYSQLI_ASSOC);
foreach($row as $keys)
{
$efurnis[] = $keys;
}
 
return $efurnis;
 
$furnis->free();
}
}

7
AJAX / [jQuery] Error al enviar datos POST con Chrome/CoolNovo
« en: 03 de Diciembre de 2012, 00:52:12 am »
El problema es que al parecer en Firefox envía los datos correctamente pero en Chrome/CoolNovo no lo hace, no sé porqué & no encuentro alguna solución... Les agradecería si me pudieran ayudar. Estoy usando la última librería de jQuery (code.jquery.com/jquery-lastest.js), uso la última versión de Chrome, uso Windows 7 & si necesitan algún dato más por favor comentarlo & les contestaré, gracias por su atención ñ.ñ

Código: (javascript) [Seleccionar]
$("input").dblclick(function()
{
var data = $(this);
var url = "http://localhost/cmsdrako/habblet/ajax_updatemotto.php";

$.ajax({
type: 'POST',
    url: url,
    data: data.serialize(),
    success: datUp(data)
});

function datUp(data)
{
console.log("LOG " + data.val());
$("input[data-id='motto']").slideUp("slow");
$("#motto").html(data.val()).fadeIn("slow");
}
});

8
AJAX / [Ayuda] Problema.
« en: 19 de Noviembre de 2012, 04:53:51 am »
Bueno, desde hace algún tiempo he estado desarrollando un menú con botones que despliegan un box con contenido mediante jQuery, mi problema es que estoy usando clases en CSS para los box & tengo el problema de que uso el mismo box para todos los botones & si presiono uno éste se despliega, si presiono el otro, pues se vuelve a ocultar... mis conocimientos en jQuery son básicos así que no sé como solucionar esto, agradecería cualquier planteamiento de solución o cualquier ayuda, gracias.

Ejemplo de mi código
Código: (javascript) [Seleccionar]
<script>
$(document).on("ready", function()
{
$(".button").click(function()
{
$(".info").slideToggle("slow");
});

$(".button2").click(function()
{
$(".info").slideToggle("slow");
});
});
</script>
Código: (html5) [Seleccionar]
<div class="button box">Información</div>
<div class="info box">Información que se despliega</div>


<div class="button2 box">Acciones</div>
<div class="info box">Información que se despliega</div>


<div class="button3 box">Cuenta</div>
<div class="info box">Información que se despliega</div>

Ya sé que podría crear una nueva clase para la información, pero sería algo tonto debido a que estaría creando código dioquis que sólo ocuparía espacio, agradezco cualquier ayuda ñ.ñ

9
PHP / [Función] Encriptación de contraseñas
« en: 06 de Noviembre de 2012, 04:07:36 am »
Hablando de exagerar, eso fue lo que hice con la siguiente función. La hice con el único propósito de ver el funcionamiento de una función de PHP (str_split) & bueno, para verla en todo su esplendor decidí crear una forma de encriptación de contraseñas, un poco exagerada...

El código ya tiene comentarios, así que explicarlo es un tanto estúpido, así que no lo haré.

Parametros
crypto (Código secreto del usuario [string], contraseña del usuario [string], nombre del usuario [string], encriptación pro [booleano])

Salida - Encriptación pro desactivada (false)
nnyZanFudBugElmahosBuriaer

Salida - Encriptación pro activada (true)
9a262c44a6acf570d80f9c75edecf2336fe3e464

Código

Código: (php) [Seleccionar]
<?php
/* Este código fue desarrollado por iStocker & liberado por el mismo autor, la creación no cuenta con derechos de autor, pero agradecería que se conservaran. Gracias por la atención a éste mensaje. [url]http://kekomundo.com/foro/index.php?action=profile;u=12804[/url] */

# Creamos las variables que la función usará, ustedes las pueden conseguir de la base de datos.
$codigo "BugsBunny";
$contra "Zanahoria23";
$nombre "Elmer Fudd";

function 
crypto($codigo$contra$nombre$pro){
# Dividimos la frase en 3 letras. Ejemplo: Abe-ced-ari-o. Las líneas medias dividen la oración, sólo usaremos las 3 primeras partes de la oración.
$codigo str_split($codigo3);
$contra str_split($contra3);
$nombre str_split($nombre3);
# Creamos una variable con las frases dividas de una manera exacta.
$crypto $codigo[2].$contra[0].$nombre[2].$codigo[0].$nombre[0].$contra[1].$codigo[1].$contra[2].$nombre[1];
# Comprobamos que la opción de encriptación "pro" esté activada (true/false). Devolvemos un valor encriptado.
return ($pro == true) ? sha1(md5(sha1($crypto))) : $crypto;
}

# Creamos una condicional para ver que todas las palabras contengan más de 9 carácteres & mostramos el resultado.
echo (strlen($codigo)>=&& strlen($contra)>=&& strlen($nombre)>=9) ? crypto($codigo$contra$nombretrue):&#39;El código, contraseña & nombre deben de ser mayores a 9 carácteres.&#39;;
?>

?>

10
Presentaciones / Hola Phperos ;D
« en: 06 de Mayo de 2011, 05:40:04 am »
Hola, bueno primero que nada comenzaré con algunos datos míos...

Nombre real: Hugo
Sobrenombre: iStocker, Masterkid & DeathsInTheSky
Edad: 14 años
Nacionalidad: Mexicana
Pasatiempos: Salir con mis amigos, informática y los estudios...

Bueno espero estar en éste foro un tiempo y no solo de paso, un gran saludo de mi parte a todos y gracias por leer éste tema n_n

11
PHP / [DUDA] Poner un usuario como directorio usando la clase dir
« en: 06 de Mayo de 2011, 04:37:48 am »
Hola después de leer otro tema me entro la curiosidad de como crear un tipo directorio que muestre el nombre del usuario por ejemplo www.web.com/usuario/ y no algo como www.web.com/usuario.php?=x_user, la verdad no se mucho de la clase dir a si que si alguien me podría dar un tutorial o algo por el estilo se lo agradecería n_n

12
PHP / Curso práctico de PHP
« en: 05 de Mayo de 2011, 00:46:59 am »
Hola bueno como algunos saben hace poco me compré un manual y lo publicaré con todos ustedes...

INTRODUCCIÓN
Manual con el que aprenderás PHP y Mysql fácilmente. Aprenderás los tipos de variables que existen, como usar distintas funciones, crear varios programas sencillos, etc. Todo esto bien detallado paso a paso para que al finalizar la lectura de este manual sepas programar en PHP, además al final del manual se incluye un tutorial de como usar XAMPP.
Si aún así, después de leerlo tiene salguna duda, o problemas con algún programa o simplemente necesitas ayuda, dentro también encontrarás mi email, con el que podrás ponerte en contacto conmigo y recibir ayuda personalizada.



CARACTERÍSTICAS
Autor: Adrián Bardedo Cordón
N° de páginas: 33

IMÁGENES


DESCARGA
PDF (Solo dura 1 semana)
ePub (Solo dura 1 semana)

Pronto subiré a servidores como MegaUpload, Rapidshare, etcétera. Agradecería la ayuda de ustedes para subir los archivos.

13
PHP / [PETICIÓN]Manual/Curso de PHP 5.3.+
« en: 04 de Mayo de 2011, 05:50:54 am »
Hola, como mi lógica no es nada buena me he decidido a comprar un manual/curso sobre PHP 5.3.+ y quiero algunas recomendaciones sobre un manual/curso.

14
Tutoriales PHP / Métodos GET y POST...
« en: 19 de Marzo de 2011, 00:23:11 am »
Bueno hoy les explicaré estos 2 recursos muy útiles, primero que nada deben de saber que los métodos GET y POST son algo diferentes, el método POST los envía por la entrada estándar STDIO, mientras que el método GET envía los datos usando la URL.

Método por GET

Código: [Seleccionar]
<html>
<head>
<title>Métodos GET y POST</title>
</head>

<body>
<h1>Ejemplo de uso de métodos GET y POST en formularios</h1>
<form action="procesador.php" method="GET">
Introduzca su nombre:<br><input type="text" name="nombre"><br>
Introduzca sus apellidos:<br><input type="text" name="apellidos"><br>
<input type="submit" value="Enviar">
</form>
</body>
</html>

Procesador.php por GET
Código: [Seleccionar]
<html>
<head>
<title>Métodos GET y POST</title>
</head>

<body>
<h1>Ejemplo de uso de métodos GET y POST en formularios</h1>
<?php echo "El nombre que ha introducido es ".$_GET[&#39;nombre&#39;]." y el apellido es ".$_GET[&#39;apellidos&#39;]."."; ?>
<br>
</body>
</html>

Método por POST
Código: [Seleccionar]
<html>
<head>
<title>Métodos GET y POST</title>
</head>

<body>
<h1>Ejemplo de uso de métodos GET y POST en formularios</h1>
<form action="prueba.php" method="POST">
Introduzca su nombre:<br><input type="text" name="nombre"><br>
Introduzca sus apellidos:<br><input type="text" name="apellidos"><br>
<input type="submit" value="Enviar">
</form>
</body>
</html>

Procesador.php por POST
Código: [Seleccionar]
<html>
<head>
<title>Métodos GET y POST</title>
</head>

<body>
<h1>Ejemplo de uso de métodos GET y POST en formularios</h1>
<?php echo "El nombre que ha introducido es ".$_POST[&#39;nombre&#39;]." y el apellido es ".$_POST[&#39;apellidos&#39;]."."; ?>
<br>
</body>
</html>

15
Bueno esto es un pequeño "tip" (Por así llamarlo) sobre los operadores para que sirven, etcétera...

Código: [Seleccionar]
<html>
<title>Prueba</title>
<?php
$a 
1;
$b 2;
$c 2;

# El operador == es igual que...
if($a == $b) {
echo "Correcto <br>";
} else {
echo" Incorrecto <br>";
}
# El operador != es distinto que...
if($a != $b) {
echo "Correcto <br>";
} else {
echo "Incorrecto <br>";
}
# El operador < es menor que...
if($a $b) {
echo "Correcto <br>";
} else {
echo"Incorrecto <br>";
}
# El operador > es mayor que...
if($a $b) {
echo "Correcto <br>";
} else {
echo "Incorrecto <br>";
}
# El operador >= es mayor o igual que...
if($a >= $c) {
echo "Correcto <br>";
} else {
echo "Incorrecto <br>";
}

if(
$a >= $c) {
echo "Correcto <br>";
} else {
echo "Incorrecto <br>";
}
?>

</html>

Aquí esta el que mide cuánto tiempo tardo que cargar la página...

Código: [Seleccionar]
<?php

$inicio 
microtime(true);

//Todo lo que quieres hacer para calcular cuanto tarda

$fin microtime(true);
$total $fin $inicio;

echo 
"La página cargo en $total segundos.";

?>

Gracias a Physlet :D

Páginas: [1] 2