Autor
|
Tema: Problema con PHP y $_GET y _$REQUEST (Leído 2,447 veces)
|
venadHD
Desconectado
Mensajes: 94
Donde hay hackers, tambien hay crackers.
|
Bueno, siendo mi primer post en este foro de PHP (Empece a aprender programacion PHP antes de ayer o ayer), me cogi un servidor local de PHP (XAMPP porque tiene debug incluido). Al tener mi primer script que me serviria para hacer algunas cosas (Además estaba probando el hash) me encuentro con este error: Undefined index: sv in C:\Server\xampp\htdocs\index.php on line 14 Sé que index es una tabla. Pero como la defino como tal? o almenos, que no de ese error y pase los argumentos totales, es decir, luego de darle "Enviar", me muestra en el $_GET ell enlace sin cifrado, es un problema gordito, ademas de que, al parecer, no hace el hash en un "if"; No se colocar el codigo con la sintaxis de PHP; Averiguado.<?php echo '<html> <head> <title>TrosNos Bug Discover System</title></head> <body>'; echo '<style> * {font-family: arial,sans-serif; font-weight: bold; font-size: 16px; color: #000000;}</style>'; echo "<br><ul><form name='servers' method='get' action='index.php'> <p>Escoge tu servidor para ver los actuales bugs</p> <br> <p> Escoge tu servidor </p> <SELECT NAME='sv' SIZE=1 WIDTH=100px> <OPTION VALUE='TWD'>TWD (Rick y Supra)</OPTION> </select><br> <input type='submit'> </form></ul> "; $gett=hash('md5',$getto); echo "$gett"; ////////////////////////////////////////////////////////////////////////////////////////////////////////// if ($gett == hash('md5', 'TWD')) { $server = "TWD (Rick y Ruben)"; echo "<ul><h2>Server reportado: $server</h2></ul>"; /* $bugID = ""; $bug_titulo = ""; $descripcion = ""; $reproduccion = ""; echo "<center><table border=1 bordercolor=#000000 bgcolor=#DDDDDD cellspacing=0 cellpadding=5 width=95%> <td width=15%>ID de bug</td><td># $bugID</td><tr> <td>Título</td><td>$bug_titulo</td><tr> <td>Descripción</td><td>$descripcion</td><tr> <td>Reproducción</td><td>$reproduccion</td> </table></center><br>"; */ //Bug Slot #1 $bugID = "1"; $bug_titulo = "Spam al cambiar de nombre"; $descripcion = "Binds: <br>bind 1 nick venad<br>bind 1 nick venad2<br><hr/>Y presionar muchas veces el bind 1"; $reproduccion = "Siempre"; echo "<center><table border=1 bordercolor=#000000 bgcolor=#DDDDDD cellspacing=0 cellpadding=5 width=95%> <td width=15%>ID de bug</td><td># $bugID</td><tr> <td>Título</td><td>$bug_titulo</td><tr> <td>Descripción</td><td>$descripcion</td><tr> <td>Reproducción</td><td>$reproduccion</td> </table></center><br>"; /////////////////////////////////////////////////////////////////////////////////////////////////////////// } elseif($gett == '') {} else { echo 'weon yo que te dije de experimentar con los enlaces ._.'; } }
Cual es el error exactamente? :/
|
|
|
En línea
|
|
|
|
#!drvy
|
El error es que intentas darle un valor a htmlspecialchars y a $getto sin saber realmente si ese valor ( REQUEST sv) esta definido. Ademas, htmlspecialchars no deberías usarlo como comprobador. if(isset($_REQUEST['sv'])){ // resto de logica. }
Por otro lado si vas a usar hash() no hace falta limpiar los caracteres. Saludos
|
|
|
En línea
|
|
|
|
venadHD
Desconectado
Mensajes: 94
Donde hay hackers, tambien hay crackers.
|
Hmm, para usar los hash, tendria que definirlo desde un principio en el metodo get por lo que veo. Vengo del lenguaje de programacion LUA donde if variable then Si no daba false o nil, no daba error, Por eso apliqué la misma formula en PHP, tengo bases de conocimiento de programacion, pero no de PHP xD Por lo tanto: <?php $server1_string = hash('sha512', 'TWD'); echo '<html> <head> <title>TrosNos Bug Discover System</title></head> <body>'; echo '<style> * {font-family: arial,sans-serif; font-weight: bold; font-size: 16px; color: #000000;}</style>'; echo "<br><ul><form name='servers' method='get' action='index.php'> <p>Escoge tu servidor para ver los actuales bugs</p> <br> <p> Escoge tu servidor </p> <SELECT NAME='sv' SIZE=1 WIDTH=100px> <OPTION VALUE='$server1_string'>TWD (Rick y Supra)</OPTION> </select><br> <input type='submit'> </form></ul> "; if (isset($_REQUEST['sv'])) { ////////////////////////////////////////////////////////////////////////////////////////////////////////// if ($gett == hash('sha512', 'TWD')) {
El acto inverso a isset, cual es? isset (Comprueba si ESTÁ definida) Y si.. quiero.. *** (Comprueba si NO ESTÁ definida) Basicamente, para hacer desaparecer el formulario al entrar en una opcion He intentado hacer esto, pero da error en la linea uno: Undefined index: sv in C:\Server\xampp\htdocs\index.php on line 5
Encontré una manera, pero me gustaria saber si hay alguna forma mas corta de hacerlo $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $web_url = 'bugs.trosnos.tk'; 1 => array(1=>hash ('sha512','TWD'), 2=>'TWD (Rick y Supra server)') ); $server1_string = hash('sha512', 'TWD'); echo '<html> <head> <title>TrosNos bug registry</title></head> <body>'; echo '<style> * {font-family: arial,sans-serif; font-weight: bold; font-size: 16px; color: #000000;}</style>'; if ($actual_link == "http://$web_url/" or $actual_link == "http://web_url/index.php") {
Mod: No hacer doble post.
|
|
« Última modificación: 11 Abril 2015, 13:50 pm por #!drvy »
|
En línea
|
|
|
|
#!drvy
|
Hmm, para usar los hash, tendria que definirlo desde un principio en el metodo get por lo que veo. eing? tengo bases de conocimiento de programacion, pero no de PHP xD Las variables _REQUEST, _GET, _POST etc no son fijas ni se declaran/definen si no se indica. Por eso es normal que te diga que no existe.. porque nunca fue declarada. Por tanto ni es boolean ni es nada. El acto inverso a isset, cual es? El acto inverso de isset es !isset con un ! delante como en la mayoría de lenguajes basados en C/C++  Undefined index: sv in C:\Server\xampp\htdocs\index.php on line 5 Repito, tienes que saber si la variable ha sido declarada para poder usarla. Mira que es sencillo y te lo puse antes. <?php if(isset($_REQUEST['sv'])){ $gett = hash('sha512', $gett); if($gett === hash('sha512','TWD')) { echo 'Coincide'; } else { echo 'No coincide.'; } }
PD: No hagas doble post. El usa el botón modificar. Saludos
|
|
|
En línea
|
|
|
|
venadHD
Desconectado
Mensajes: 94
Donde hay hackers, tambien hay crackers.
|
El ultimo error me lo habia dado al intentar hacer la inverda de isset (con is_null) pero claro, es lo que tu me estás diciendo, el PHP hay que definir todo, porque no es nada (Al contrario de LUA que devuelve nil) enfin. Ya he solucionado el error con tus consegos en el codigo  lo dejo aqui por si alguien le saca mejor partido  Aunque aun me quedan darle unos toques magicos con esos CSS y tablas. PD: "El efecto inverso" o como quiera llamarse, funciona para variables?, perdon por ser tan noob, pero solo llevo un dia en PHP  $mivariable = "Holap"; if (!$mivariable == "Hola") { echo 'Correcto'; }
<?php //Creditos a #!drvy de foro.elhacker.net por la resolucion de errores en el codigo :D 1 => array(1=>hash ('sha512','TWD'), 2=>'TWD (Rick y Supra server)') ); echo '<html> <head> <title>TrosNos bug registry</title></head> <body>'; echo '<style> * {font-family: arial,sans-serif; font-weight: bold; font-size: 16px; color: #000000;}</style>'; if (!isset($_REQUEST['sv'])) { echo "<br><ul><form name='servers' method='get' action='index.php'> <p>Escoge tu servidor para ver los actuales bugs</p> <SELECT NAME='sv' SIZE=1 WIDTH=100px> <OPTION VALUE='{$lang[1][1]}'>{$lang[1][2]}</OPTION> </select><br> <input type='submit'> </form></ul> "; } if (isset($_REQUEST['sv'])) { ////////////////////////////////////////////////////////////////////////////////////////////////////////// if ($gett == hash('sha512', 'TWD')) { echo "<br><ul><a href='./'><button style='width=95%'>Volver atras</button></a></ul>"; echo "<ul><h2>Server reportado: {$lang[1][2]}</h2></ul>"; /* //PLANTILLA $bugID = ""; $bug_titulo = ""; $descripcion = ""; $reproduccion = ""; echo "<center><table border=1 bordercolor=#000000 bgcolor=#DDDDDD cellspacing=0 cellpadding=5 width=95%> <td width=15%>ID de bug</td><td># $bugID</td><tr> <td>Título</td><td>$bug_titulo</td><tr> <td>Descripción</td><td>$descripcion</td><tr> <td>Reproducción</td><td>$reproduccion</td> </table></center><br>"; */ //Bug Slot #1 $bugID = "1"; $bug_titulo = "Spam al cambiar de nombre"; $descripcion = "Binds: <br>bind 1 nick venad<br>bind 1 nick venad2<br><hr/>Y presionar muchas veces el bind 1"; $reproduccion = "Siempre"; echo "<center><table border=1 bordercolor=#000000 bgcolor=#DDDDDD cellspacing=0 cellpadding=5 width=95%> <td width=15%>ID de bug</td><td># $bugID</td><tr> <td>Título</td><td>$bug_titulo</td><tr> <td>Descripción</td><td>$descripcion</td><tr> <td>Reproducción</td><td>$reproduccion</td> </table></center><br> "; /////////////////////////////////////////////////////////////////////////////////////////////////////////// } elseif($gett == '') {} else { echo 'weon yo que te dije de experimentar con los enlaces ._.'; } }
Cuando dije: Hmm, para usar los hash, tendria que definirlo desde un principio en el metodo get por lo que veo. me referia a esta parte del codigo: A que tendria que definir la string ("hasheada") ya en la form,sino no me lo reconoceria correctamente 1 => array(1=>hash ('sha512','TWD'), 2=>'TWD (Rick y Supra server)') ); echo '<html> <head> <title>TrosNos bug registry</title></head> <body>'; echo '<style> * {font-family: arial,sans-serif; font-weight: bold; font-size: 16px; color: #000000;}</style>'; if (!isset($_REQUEST['sv'])) { echo "<br><ul><form name='servers' method='get' action='index.php'> <p>Escoge tu servidor para ver los actuales bugs</p> <SELECT NAME='sv' SIZE=1 WIDTH=100px> <OPTION VALUE='{$lang[1][1]}'>{$lang[1][2]}</OPTION> </select><br> <input type='submit'> </form></ul> "; }
|
|
« Última modificación: 11 Abril 2015, 14:08 pm por venadHD »
|
En línea
|
|
|
|
#!drvy
|
PD: "El efecto inverso" o como quiera llamarse, funciona para variables?, perdon por ser tan noob, pero solo llevo un dia en PHP  Funcionar funciona pero en ese caso que muestras estas comparando strings. Por tanto debes usarlo en el comparador. $mivariable = "Holap"; if ($mivariable != "Hola") { echo 'Correcto'; }
Para variables se usa cuando quieres que comparar bools con el contrario. Ejemplo: $mivariable = true; if(!$mivariable == false){ echo 'Falso'; } else { echo 'No falso'; }
En ese caso debería dar 'Falso' porque estas comparando el valor contrario de $mivariable. Saludos
|
|
|
En línea
|
|
|
|
venadHD
Desconectado
Mensajes: 94
Donde hay hackers, tambien hay crackers.
|
Uh, perfecto, entonces entiendo. El ! es para indicar algo como "Si no es x" en las strings. Y el ! en bools es el contrario. Algo parecido a lo que pasa en lua Gracias por la ayuda!! Ya está solucionado este problema!  Deberian dar un premio al foro por las enseñanzas :O PD: un fantasma abriendo la boca seria bueno xD
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[AYUDA] Seguridad en $_POST y $_GET
PHP
|
Xephiro
|
3
|
3,440
|
8 Septiembre 2008, 05:51 am
por Ertai
|
|
|
problema $_GET['id'];
PHP
|
viher
|
1
|
3,791
|
19 Agosto 2010, 19:56 pm
por Shell Root
|
|
|
problemilla con $_GET [solucionado]
« 1 2 »
PHP
|
soru13
|
10
|
5,287
|
4 Marzo 2011, 01:33 am
por .mokk.
|
|
|
{SOLUCIONADO} no consigo obtener dato con _GET
PHP
|
|Miguel|
|
4
|
2,827
|
9 Abril 2012, 10:58 am
por |Miguel|
|
|
|
Your request timed out. Please retry the request.
Sugerencias y dudas sobre el Foro
|
z3nth10n
|
8
|
4,845
|
4 Agosto 2013, 21:43 pm
por z3nth10n
|
|