Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - Spider-Net

#601
PHP / Re: Problema con tabla y ciclo FOR
9 Enero 2011, 00:13 AM
Debes usar for anidados.

Código (php) [Seleccionar]
$dias=30;
$pisos=10;

echo "<table width='300' border='1' cellspacing='0' cellpadding='0'>";
for($i=1;$i<=$pisos;$i++){
    echo "<tr>";
    for($j=1;$j<=$dias;$j++){
         echo "<td>D&iacute;a ".$j."</td>";
    }
    echo "</tr>";
}
echo "</table>";
#602
Lo que deberías hacer es poner el input en modo solo lectura:

Código (html4strict) [Seleccionar]
<input type="text" name="elnombre" value="elnombredeusuario" readonly>
#603
Prueba modificando la codificación de la web:


Código (html4strict) [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Prueba</title>
</head>

<body>
</body>
</html>
#604
Creo que ya el compañeo ~ Yoya ~ te ha aclarado prácticamente todas tus dudas, sólo añadir que debes filtrar todas las variables que vayas a imprimir directamente por pantalla, da igual que uses echo, print o cualquier otra función de salida por pantalla, todas serían vulnerables a XSS si no filtras las variables antes de mostrarlas.
#605
Para evitar el SQL Injection en ese código lo que tendrías que hacer es filtrar las variables $username y $password antes de ejecutar cualquier sentencia SQL con ellas. Hay muchas funciones para parsear variables como mysql_real_escape_string(), strip_tags(), stripslashes(), etc.

Un ejemplo sencillo:

Código (php) [Seleccionar]

...

$email=mysql_real_escape_string($_POST['email']);
$password=mysql_real_escape_string($_POST['password']);

$sql=mysql_query("SELECT * FROM admin WHERE email='$email' and clave='$password'");

...


Es importante NUNCA ejecutar una sentencia SQL sin antes haber filtrado TODAS las variables que vayan a formar parte de la sentencia.

Lo mismo a la hora de mostrar las variables directamente con un "echo". Es bueno filtrar las variables antes de insertarlas en la base de datos y antes de mostrarlas por pantalla para evitar también ataques de XSS. Puedes filtrar el XSS con strip_tags() por ejemplo.
#606
Desarrollo Web / Re: ayuda metodo onclick
7 Enero 2011, 02:04 AM
Las fechas son cadenas por lo tanto te faltan las comillas:


Código (php) [Seleccionar]
$fecha=$POST_['fecha'];

echo "<td class='text1' style='width: 3em; cursor:pointer;' onClick='enviar2(\"$fecha\")' onmouseover='cambiacolor_over(this)' onmouseout='cambiacolor_out(this)'></td>";

function enviar2(id) {

alert(id);

}
#607
Con AJAX, de la misma forma que te puse en el ejemplo que te puse la última vez pero en lugar de hacer que el PHP inserte un elemento en la base de datos, haces que haga la comprobación y procese la información que necesites.

http://foro.elhacker.net/desarrollo_web/libro_de_isitas_sin_que_se_vaya_la_pagina-t314936.0.html;msg1560115#msg1560115
#608
PHP / Re: Descifrando un algoritmo
28 Diciembre 2010, 16:19 PM
Está utilizando operadores bit a bit, si sabes pasar esos números a binario no es complicado saber qué valor está asignando a cada variable. Efectivamente se pueden usar números en hexadecimal en php, siempre que empiecen por 0x son hexadecimales, puedes usar este sencillo conversor para transformar los números a binario y decimal y luego realizar el desplazamiento de bits: http://easycalculation.com/hex-converter.php

Para saber como funciona lee un poco sobre los operadores bit a bit ( http://php.net/manual/es/language.operators.bitwise.php ).

En decimal sería así:
Código (php) [Seleccionar]

        $a =  26437 << 16 | 8961;  
$b =  61389 << 16 | 43913;  
$c =  39098 << 16 | 56574;  
$d =  4146  << 16 | 21622;  
$e =  50130 << 16 | 57840;
#609
ajax.js

Código (javascript) [Seleccionar]
// Crea un objeto Ajax para trabajar de forma asíncrona con el servidor
function objetoAjax(){
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
  }
}

if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}

function inserta_comentario(){
               nick=document.getElementById('nick').value;
               comentario=document.getElementById('comentario').value;

divResultado = document.getElementById('comentarios');
ajax=objetoAjax();
ajax.open("GET", "comment.php?nick="+nick+"&comentario="+comentario);
               // Esta es la imagen de carga que se muestra mientras se ejecuta el php
divResultado.innerHTML = '<center><img src="loading.gif"></center>';
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
divResultado.innerHTML = ajax.responseText
}
}
ajax.send(null)
}

Ejemplo de loading.gif:

comment.php
Código (php) [Seleccionar]

$nick=$_GET['nick'];
$comentario=$_GET['comentario'];

// Conexión a la base de datos
$usuario="user";
$password="your_pass";
$host="your_host";
$db="db_name";

$link=mysql_connect($host,$usuario,$password) or die("Error al conectar a la base de datos");
mysql_select_db($db) or die ("Se produjo un error al seleccionar la base de datos");

$sql=mysql_query("INSERT INTO comments (nick, comentario) VALUES ('$nick', '$comentario')");
echo "<strong>$nick</strong><hr />";
echo $comentario;


index.html
Código (html4strict) [Seleccionar]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
     <title>Ejemplo AJAX</title>
     <script type="text/javascript" src="ajax.js"></script>
</head>
<body>
     <input type="text" id="nick" name="nick"><br />
     <input type="text" id="comentario" name="comentario"><br /><br />
     <input type="button" onclick="inserta_comentario();">

     <div id="comentarios" style="background-color: #D5DFE6; width: 500px;"></div>
</body>
<html>
</script>


Esto es un ejemplo súper resumido de lo que sería una consulta AJAX. El mismo efecto se puede conseguir de otras formas, pero he intentado hacerlo lo más sencillo posible y sin framework puesto que veo que siempre trabajas en puro javascript. Con un framework como jquery te ahorras tener que declarar el objeto ajax porque ya lo posee el framework y además la carga AJAX se realiza en una sola línea. Obviamente las variables pasadas por GET ni siquiera están siendo filtradas por lo que el código es vulnerable a XSS, pero no he querido liarlo demasiado para que lo comprendas, una vez comprendas como funciona te será sencillo aumentar la seguridad filtrando las variables con funciones php como htmlspecialchars(), stripslashes(), etc.

El ejemplo está hecho de memoria, he pillado algunos trozos de código de alguno de mis proyectos y los he dejado con lo básico pero no he probado el resultado, de todas formas debería funcionar.

Obviamente tendrás que tener una base de datos a la que conectar con una tabla "comentarios" que al menos tenga el campo 'nick' y el campo 'comentario'.
#610
Antes que nada enhorabuena Riki_89D por el efecto, porque te ha quedado realmente bien, bastante suave y eficaz, lo único que como ya has dicho yo puliría un poco el código para optimizarlo pero enhorabuena porque has conseguido un buen efecto sin usar frameworks.

Por cierto, como consejo, te diría que te acostumbres a identar tu código porque cuando es corto quizás no haya problemas, pero cuando son cada vez más largos tendrás más problemas para encontrar errores y demás, y además, con un código bien tabulado facilitarás la lectura del mismo a otros programadores y a ti mismo en un futuro.

Un saludo.