elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ... 75
151  Programación / PHP / Re: ajax recibir daros en: 24 Mayo 2016, 22:33 pm
Ah! Fallo mio, el copia pega xD gracias AlbertoBSD por darte cuenta.

Código
  1. $.post('mensaje.php?op=1', { mensaje: mensaje } );

No dije nada sobre comprobar la variable porque creia que ya lo tendria controlado. De todas maneras lo pongo que no cuesta nada:

Un mínimo de seguridad sería:

Código
  1. $mensaje = filter_input(INPUT_POST, 'mensaje', FILTER_SANITIZE_STRING);

Aunque sería mucho más seguro si usaras prepared statements.
152  Programación / PHP / como aliviar la carga del servidor con muchos datos y requests en: 24 Mayo 2016, 22:18 pm
En todo desarrollo llega la hora en la que nos preguntamos de qué manera hacer nuestra aplicación más eficiente, hacer las cosas de manera que suponga la menos carga posible para el servidor.

Actualmente estoy seleccionando y mostrando; a veces es una sola fila y otras hay un limite, pero hay un apartado en el que envio todas las filas al plugin JQuery DataTables. Bueno, todas las filas pero no todas las columnas, solo las necesarias y la verdad es que tendrían que ser muchas filas (como 1000 aunque no tengo ni idea) para que empezase a afectar no solo al cliente, si no al servidor tambien cuando hayan varios usuarios pidiendo a la vez.

Me gustaría saber si realmente vale la pena cachear los datos y donde sería mejor, si en una clase de php, en memcached (es el que estoy usando) o incluso en el propio cliente (he leido algo pero no estoy seguro de si se puede hacer).

En el caso de usar una clase php para cargar todas las filas supongo que tendría que convertir la navegación de mi web a AJAX para no tener que recargar todas las filas cada vez (osea que no serviria de nada la clase).

¿Teneis alguna idea más?

Gracias!
153  Programación / PHP / Re: ajax recibir daros en: 24 Mayo 2016, 21:13 pm
El código debería funcionar bien, no veo ningún fallo.

Para este tipo de casos tienes que hacer debug: pon un alert(mensaje) en el script y mira si al hacer click en enviar se muestra el mensaje que pusiste. Si se muestra, habrá que ver si se está enviando el mensaje por post al archivo mensaje.php, para ello pon un echo $mensaje en dentro del primer if y otro alert(data) en el script enviar.js:

Código
  1. if ($op === 1) {
  2.    $nombre  = $_SESSION['usuario'];
  3.    $mensaje = $_POST['mensaje'];
  4.    echo $mensaje;/*
  5.     mysqli_query($link, "INSERT INTO chat (nombre, mensaje) VALUES('$nombre', '$mensaje')");
  6.     mysqli_close($link);*/
  7.  
  8. }

Código
  1.    $(function () {
  2.        $('#boton').on('click', function () {
  3.            var mensaje = $('#mensaje').val(),
  4.                ajax    = $.post('mensaje.php?op=1', { s: mensaje } );
  5.     alert(mensaje);
  6.            ajax.done(function(data) {
  7.     alert(data);/*
  8.                 var content = $.get('mensaje.php?op=2');
  9.                 $('#contenedor').empty().append( content );
  10.                 $('#mensaje').val('');*/
  11.            });
  12.        });
  13.    });

La linea que coge el valor int en el archivo mensaje.php se utiliza para saber si vas a guardar datos en la db o vas a cogerlos. Así no necesitas tener dos archivos, solo 1.
154  Programación / PHP / Re: ajax recibir daros en: 24 Mayo 2016, 02:20 am
Te recomiendo que uses JQuery para este tipo de cosas ya que es mucho más sencillo que todo eso que estás haciendo (casi ni lo entiendo  :rolleyes:).

No necesitas usar el elemento form si vas a enviar por ajax, por lo que lo puedes quitar. Tampoco necesitas un input submit, cambialo por un anchor (y por cierto, los inputs hay que cerrarlos):

Código
  1. <div id="contenedor"></div>
  2. <input type="text" id="mensaje" name="mensaje" />
  3. <a id="boton" href="#">Enviar</a>

Esto sería enviar.js:

Código
  1. $(function () {
  2.    $('#boton').on('click', function () {
  3.        var mensaje = $('#mensaje').val(),
  4.            ajax    = $.post('mensaje.php?op=1', { s: mensaje } );
  5.  
  6.        ajax.done(function() {
  7.            var content = $.get('mensaje.php?op=2');
  8.            $('#contenedor').empty().append( content );
  9.            $('#mensaje').val('');
  10.        });
  11.    });
  12. });

Y esto mensaje.php (ingresar.php y cargar.php juntos):

Código
  1. <?php
  2.  
  3.  
  4. require('connect_db2.php');
  5.  
  6. $op = (int) $_GET['op'];
  7.  
  8. if ($op === 1) {
  9.    $nombre  = $_SESSION['usuario'];
  10.    $mensaje = $_POST['mensaje'];
  11.  
  12.    mysqli_query($link, "INSERT INTO chat (nombre, mensaje) VALUES('$nombre', '$mensaje')");
  13.    mysqli_close($link);
  14.  
  15. } else if ($op === 2) {
  16.    $color = '#320EF8';
  17.  
  18.    function mostrarDatos($resultados, $color) {
  19.        if($resultados !== NULL) {
  20.            $mensaje = '<p style="display: inline; color: ' . $color . '; font-size: 120%; margin-left: 8px;">' . $resultados['nombre'] . ': </p>' .
  21.                       $resultados['mensaje'] . '<br /><hr><br />';
  22.        } else $mensaje = '<br />No hay mas datos<br />';
  23.  
  24.        return $mensaje;
  25.    }
  26.  
  27.    $result = mysqli_query($link, 'SELECT * FROM chat');
  28.  
  29.    while ($fila = mysqli_fetch_array($result)) {
  30.        echo mostrarDatos($fila, $color);
  31.    }
  32.  
  33.    mysqli_free_result($result);
  34.    mysqli_close($link);
  35. }
  36.  
  37. ?>
155  Programación / PHP / Re: Registro PHP en: 24 Mayo 2016, 00:23 am
El propio término lo está diciendo:

Un valor solo es idéntico a si mismo. Quiere decir que no solo el valor es el mismo, si no que el tipo (string, entero, boolean, flotante, etc...) también.

Ejemplos de diferentes tipos de valores:

Código
  1. $string = '123';  // valor del tipo string
  2. $integer = 123; // valor del tipo entero
  3. $boolean = FALSE; // valor del tipo booleano
  4.  
  5. // TRUE - se cumple la condición
  6. echo $string == $string ? 'si<br />' : 'no<br />';
  7. echo $integer == $integer ? 'si<br />' : 'no<br />';
  8. echo $string === $string ? 'si<br />' : 'no<br />';
  9. echo $integer === $integer ? 'si<br />' : 'no<br />';
  10.  
  11. echo $string == $integer ? 'si<br />' : 'no<br />';
  12.  
  13. // FALSE - no se cumple
  14. echo $string === $integer ? 'si<br />' : 'no<br />';

En el ejemplo podemos ver que:

- $string es igual a $integer.

Sin embargo:

- $string no es idéntico a $integer.
156  Programación / PHP / Re: Registro PHP en: 23 Mayo 2016, 18:24 pm
La siguiente linea es imprescindible a la hora de desarrollar una web, ponla al principio de tu index.php:

Código
  1. ini_set('display_errors', 1);

Echale un vistazo a las tablas donde se explican los distintos tipos de comparación, si vas a comparar dos valores del tipo entero (o booleanos) usa 3 =

Código
  1. if ($valid_user === 0)
  2. if ($valid_user === TRUE)

En el manual de php encontrarás todo lo que necesites, además en la sección de comentarios tendrás mejores explicaciones y ejemplos más avanzados (y útiles).
157  Sistemas Operativos / GNU/Linux / http/2 no funciona con apache en Centos 6.7 en: 23 Mayo 2016, 07:19 am
El otro dia se dió soporte al protocolo http/2 con apache "2.4.20 (Red hat)" en kloxo-mr7 pero al parecer no funciona, lo estoy probando en una de mis webs y no se activa (sigo viendo http/1.1.

¿Hay alguien usando http/2 con apache en CentOS? Si os funciona tal vez sea un fallo en la configuración del kloxo-mr 7 o alomejor es un problema del paquete o a saber que.

Por si os interesa, está funcionando perfectamente con nginx y nginx-proxy.

Gracias.
158  Programación / PHP / volver a instanciar dentro de la clase en: 23 Mayo 2016, 03:06 am
Tengo una pequeña duda sobre una clase. Me gustaría saber por qué es necesario volver a instanciar la clase para llamar a los setters y por qué se usa el while si hay un LIMIT 1 en la query además de que no veo necesidad para un array:

Código
  1. class myClass {
  2.  
  3. private $variable_1;
  4. private $variable_2;
  5. private $variable_3;
  6.  
  7. private function generate($myClass) {
  8.    $this->variable_1 = $myClass->variable_1;
  9.    $this->variable_2 = $myClass->variable_2;
  10.    $this->variable_3 = $myClass->variable_3;
  11. }
  12.  
  13. private function addInformation($stmt) {
  14.    $i = 0;
  15.    $stmt->bind_result($variable_1, $variable_2, $variable_3);
  16.  
  17.    while ($stmt->fetch()) {
  18.        $arrayStaff[$i] = new myClass();
  19.        $arrayStaff[$i]->setVariable1($variable_1);
  20.        $arrayStaff[$i]->setVariable2($variable_2);
  21.        $arrayStaff[$i]->setVariable3($variable_3);
  22.        $i++;
  23.    }
  24.  
  25.    return $arrayStaff;
  26. }
  27.  
  28. public function StaffFromId($id) {
  29.    $mysqli = $this->aet->getAetSql();
  30.    $exit   = FALSE;
  31.  
  32.    if ($stmt = $mysqli->prepare("SELECT * FROM staff WHERE id = ? LIMIT 1")) {
  33.        $stmt->bind_param('i', $id);
  34.        $stmt->execute();
  35.        $stmt->store_result();
  36.  
  37.        if ($stmt->num_rows === 1) {
  38.            $arrayStaff = $this->addInformation($stmt);
  39.            $this->generate($arrayStaff[0]);
  40.            $exit = TRUE;
  41.        }
  42.    }
  43.  
  44.    return $exit;
  45. }
  46.  
  47. public function setVariableX($variable_X) {
  48.    $this->variable_X = $variable_X;
  49. }
  50.  
  51. public function getVariableX() {
  52.    return $this->variable_X;
  53. }
  54.  
  55. }

Si no me equivoco lo siguiente también funciona y no hace falta tener 2 funciones que hacen lo mismo, no?

Código
  1. private function addInformation($stmt) {
  2.    $stmt->bind_result($variable_1, $variable_2, $variable_3);
  3.  
  4.    $stmt->fetch();
  5.  
  6.    $this->setVariable1($variable_1);
  7.    $this->setVariable2($variable_2);
  8.    $this->setVariable3($variable_3);
  9. }

O directamente:

Código
  1. $this->variable_1 = $variable_1;

Mi conocimiento todavia es limitado por lo que ¿hay alguna razón por la que se hizo eso asi? ¿Tal vez implementar más cosas que necesiten eso? La clase la hizo un amigo con el que no he podido volver a hablar.

Gracias!
159  Programación / PHP / Re: Usuario Php en: 23 Mayo 2016, 02:34 am
¿Como estás iniciando la sesión? Un simple session_start() con los valores default seguro...

En adición a setcookie() crea una función que configure la sesión como quieras y tambien hay que renovarla cada 30 min (es lo recomendado):

En el siguiente orden:

- Crear tus parametros de cookie (nombre, dominio, etc) y obtenen los actuales con (session_get_cookie_params()) para usar los que quieras dejar por defecto.
- Cambiar los parametros de la cookie actuales (session_set_cookie_params()) pasandole tus parametros y los que quieras dejar por defecto como argumentos (en el orden que indica la documentación).
- Darle nombre a la sesión (session_name()).
- Empezar sesión (session_start()).
- Crear una variable de sesión asignandole time() para saber cuando fue creada, pero comprobando primero que no exista ya.
- Comprobar si la sesión fue creada hace más de 30 min (18000 segundos), usando la variable anteriormente creada, y regenerar la sesión (session_regenerate_id()). Actualizar la variable de sesión que contiene time().

Cualquier duda o problema con tu función, muestranosla y te ayudaremos.

Una vez tengas tu función creada, la llamas al principio de tu index.php, en lugar de session_start().
160  Programación / PHP / Re: ajax recibir daros en: 23 Mayo 2016, 00:42 am
JQuery tiene una función llamada serializeArray que guarda el formulario en un array con el nombre del elemento y el valor. Luego simplemente con la función post envias el array y puedes actualizar el div con la respuesta del servidor.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ... 75
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines