Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: #Aitor en 1 Julio 2013, 17:42 PM

Título: PHP dentro de javascript.
Publicado por: #Aitor en 1 Julio 2013, 17:42 PM
¿Alguien podría decirme por qué no se ejecuta el código en el else? (Obviamente el documento es .php).

Código (javascript) [Seleccionar]

<html>
<head>
</head>
<body>
<script type="text/javascript">
var ejemplo = "algo";
var ejemplo2 = document.Formulario.ejemplo2.value;

if (ejemplo2 != ejemplo){
alert("incorrecto");
}else{
alert ("correcto");
<?php header('Location: ejemplo4.php'); ?>
}
</script>

// resto del código, formularios, bla bla bla...
</body>
</html>


Esto, obviamente estaría con su formulario... el problema es que cuando metes la "contraseña" que sería "algo" (variable ejemplo). Sólo sale la alerta de correcto, mas no redirecciona a la siguiente página, sí bien sé, que poner php ahí, pudiendo poner un document.location es una bobada, pero no me interesa que vean a dónde va redireccionado, pero si el string que se necesita meter para ser redireccionado...

Realmente no sé si se puede hacer esto, porque como javascript viene del lado del cliente, y php del lado del servidor... en el caso de no poder, habría alguna forma que oculte ese document.location? Probé con encriptadores, pero no me convencen, y algunos ni funcionan.

¡Gracias!
Título: Re: PHP dentro de javascript.
Publicado por: #!drvy en 1 Julio 2013, 17:46 PM
No es posible por que PHP se ejecuta mucho antes que el javascript o el html.

PD: Van a ver igualmente a donde va a redireccionar por que pueden obligar al javascript a cumplir la condición forzosamente.

Saludos 
Título: Re: PHP dentro de javascript.
Publicado por: Pablo Videla en 1 Julio 2013, 17:52 PM
Si haces todo ese script con un echo de php, te va  salir lo que quieres.
Título: Re: PHP dentro de javascript.
Publicado por: #Aitor en 1 Julio 2013, 18:38 PM
Cita de: DonVidela en  1 Julio 2013, 17:52 PM
Si haces todo ese script con un echo de php, te va  salir lo que quieres.

¿Te refieres a esto? Si es así no funciona T_T


Código (php) [Seleccionar]

<?php
 
echo '<script type="text/javascript">
function Comprobar(){

var ejemplo = "algo";
var ejemplo2 = document.Formulario.ejemplo2.value;
 
if (ejemplo2 != ejemplo){
alert("incorrecto");
}else{
alert ("correcto");
<?php header(\'Location: ejemplo4.php\'); ?>

}}

</script>

<form name="Formulario" onsubmit="return false;">
<center><input name="ejemplo2"></center><br>
<center><input type="button" value="Confirmar" OnClick="Comprobar()"></center>
</form>
<br>';
?>


Gracias por la ayuda!
Título: Re: PHP dentro de javascript.
Publicado por: #Aitor en 1 Julio 2013, 18:40 PM
Cita de: drvy | BSM en  1 Julio 2013, 17:46 PM
No es posible por que PHP se ejecuta mucho antes que el javascript o el html.

PD: Van a ver igualmente a donde va a redireccionar por que pueden obligar al javascript a cumplir la condición forzosamente.

Saludos 

No sé quién tiene razón, el chico de abajo dice que si se puede >_<'

Referente a la postdata, sé que pueden forzar a cumplir la condición, pero es más fácil ver la "contraseña" a usar inspector elemento e igualar por ejemplo 1==1, para que se cumpla la condicion y pasar por la redirección.

Gracias por la ayuda !
Título: Re: PHP dentro de javascript.
Publicado por: #!drvy en 1 Julio 2013, 18:47 PM
Es que para esas cosas, mejor programarlo todo en PHP o en su caso usa AJAX para enviar los valores, comprobarlos y que te devuelva la url a la que tiene que ir.

CitarNo sé quién tiene razón, el chico de abajo dice que si se puede >_<'

Pruebalo =)

Saludos

Título: Re: PHP dentro de javascript.
Publicado por: Pablo Videla en 1 Julio 2013, 18:53 PM
Cita de: drvy | BSM en  1 Julio 2013, 18:47 PM
Es que para esas cosas, mejor programarlo todo en PHP o en su caso usa AJAX para enviar los valores, comprobarlos y que te devuelva la url a la que tiene que ir.

Pruebalo =)

Saludos



Tiene razón el amigo, yo me equivoque, en vez de usar header location, usa document.location, no es necesario php aca.
Código (html4strict) [Seleccionar]


<script type="text/javascript">
function Comprobar(){

var ejemplo = "algo";
var ejemplo2 = document.Formulario.ejemplo2.value;

if (ejemplo2 != ejemplo){
alert("incorrecto");
}else{
alert ("correcto");
document.location = "ejemplo.html";
}}
</script>

<form name="Formulario" onsubmit="return false;">
<center><input name="ejemplo2"></center><br>
<center><input type="button" value="Confirmar" OnClick="Comprobar()"></center>
</form>
<br>
Título: Re: PHP dentro de javascript.
Publicado por: #!drvy en 1 Julio 2013, 18:54 PM
@DonVidela, es que #Aitor intenta evitar document.location para no enseñar la url a la que va a redireccionar. Entonces yo creo que lo mejor que lo haga todo por parte de server..

Saludos
Título: Re: PHP dentro de javascript.
Publicado por: Pablo Videla en 1 Julio 2013, 18:56 PM
Cita de: drvy | BSM en  1 Julio 2013, 18:54 PM
@DonVidela, es que #Aitor intenta evitar document.location para no enseñar la url a la que va a redireccionar. Entonces yo creo que lo mejor que lo haga todo por parte de server..

Saludos

Bueno, en eso tienes razón, no se que tanto debería esconder xD
Título: Re: PHP dentro de javascript.
Publicado por: #Aitor en 1 Julio 2013, 18:58 PM
Cita de: drvy | BSM en  1 Julio 2013, 18:54 PM
@DonVidela, es que #Aitor intenta evitar document.location para no enseñar la url a la que va a redireccionar. Entonces yo creo que lo mejor que lo haga todo por parte de server..

Saludos

El problema es que, si lo hago todo por parte del servidor, no se ve el código fuente, y por ende no se sabrá que se debe ingresar. Mi intención es que no hagan trampas saltandose todo la estructura, poniendo en el navegador a dónde está redireccionando el document.location

Quizá debí haber aclarado que es para un Wargame... >_<
Título: Re: PHP dentro de javascript.
Publicado por: #!drvy en 1 Julio 2013, 19:27 PM
CitarQuizá debí haber aclarado que es para un Wargame... >_<

jajajaj ahora todo tiene sentido xD.

Bue, para estas cosas hay que ponerse creativo xD. No se.. yo lo haría de 2 maneras:



Supongamos que tienes una archivo reto.php...

El codigo que tienes, pero si se cumple (correcto), le envio una peticion ajax a un php con la respuesta, este la evalúa y si es correcta, retorna la url.

Ejemplo:
Código (javascript) [Seleccionar]
<?php
if(!empty($_GET['respuesta'])){
   if(
$_GET['respuesta']==='algo'){die('http://enlace_al_siguente_reto.com');}
   else{die(
'error');}
}
?>

<html>
<head>
</head>
<body>

<!-- Funcion para AJAX -->
<script type="text/javascript" id="ajax">
function cargarReto(variable){ var xmlhttp;
  if (window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}
  else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
  xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4 && xmlhttp.status==200){
     var respuesta = xmlhttp.responseText;

     // Si la respuesta no es correcta alerta.
     if(respuesta==='error'){alert('Intento de h4ck -__-'); return false;}
     // Si es correcta redirigir.
     else{document.location=respuesta; return true;}

  }}; xmlhttp.open("GET","reto.php?respuesta="+variable,true); xmlhttp.send();
};
</script>

<script type="text/javascript">
var ejemplo = "algo";
var ejemplo2 = document.Formulario.ejemplo2.value;

if (ejemplo2 != ejemplo){
  alert("incorrecto");
}else{
  alert ("correcto");
  cargarReto(ejemplo2);
}
</script>

// resto del código, formularios, bla bla bla...
</body>
</html>




O, tambien puedes ofuscar el document location. Por ejemplo:

Código (html4strict) [Seleccionar]
<html>
<head>
</head>
<body>


<script type="text/javascript">
var ejemplo = "algo";
var ejemplo2 = "algo";

if (ejemplo2 != ejemplo){
  alert("incorrecto");
}else{
  alert ("correcto");
  var _0x1f7d=["\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x67\x6F\x6F\x67\x6C\x65\x2E\x63\x6F\x6D"];document[_0x1f7d[0]]=_0x1f7d[1];
}
</script>

// resto del código, formularios, bla bla bla...
</body>
</html>


Si se cumple, hará document.location="http://www.google.com";
http://javascriptobfuscator.com/

Saludos
Título: Re: PHP dentro de javascript.
Publicado por: #Aitor en 1 Julio 2013, 20:03 PM
Cita de: drvy | BSM en  1 Julio 2013, 19:27 PM
jajajaj ahora todo tiene sentido xD.

Bue, para estas cosas hay que ponerse creativo xD. No se.. yo lo haría de 2 maneras:



Supongamos que tienes una archivo reto.php...

El codigo que tienes, pero si se cumple (correcto), le envio una peticion ajax a un php con la respuesta, este la evalúa y si es correcta, retorna la url.

Ejemplo:
Código (javascript) [Seleccionar]
<?php
if(!empty($_GET['respuesta'])){
   if(
$_GET['respuesta']==='algo'){die('http://enlace_al_siguente_reto.com');}
   else{die(
'error');}
}
?>

<html>
<head>
</head>
<body>

<!-- Funcion para AJAX -->
<script type="text/javascript" id="ajax">
function cargarReto(variable){ var xmlhttp;
  if (window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}
  else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
  xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4 && xmlhttp.status==200){
     var respuesta = xmlhttp.responseText;

     // Si la respuesta no es correcta alerta.
     if(respuesta==='error'){alert('Intento de h4ck -__-'); return false;}
     // Si es correcta redirigir.
     else{document.location=respuesta; return true;}

  }}; xmlhttp.open("GET","reto.php?respuesta="+variable,true); xmlhttp.send();
};
</script>

<script type="text/javascript">
var ejemplo = "algo";
var ejemplo2 = document.Formulario.ejemplo2.value;

if (ejemplo2 != ejemplo){
  alert("incorrecto");
}else{
  alert ("correcto");
  cargarReto(ejemplo2);
}
</script>

// resto del código, formularios, bla bla bla...
</body>
</html>




O, tambien puedes ofuscar el document location. Por ejemplo:

Código (html4strict) [Seleccionar]
<html>
<head>
</head>
<body>


<script type="text/javascript">
var ejemplo = "algo";
var ejemplo2 = "algo";

if (ejemplo2 != ejemplo){
  alert("incorrecto");
}else{
  alert ("correcto");
  var _0x1f7d=["\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x67\x6F\x6F\x67\x6C\x65\x2E\x63\x6F\x6D"];document[_0x1f7d[0]]=_0x1f7d[1];
}
</script>

// resto del código, formularios, bla bla bla...
</body>
</html>


Si se cumple, hará document.location="http://www.google.com";
http://javascriptobfuscator.com/

Saludos

Probé las dos, y funcionan perfectamente, muchísimas gracias. Me gustó la de ajax, aunque sinceramente no entiendo el código, quiero decir, sé lo que hace y lo que tengo que modificar para que pase lo que yo quiero, pero no sé que es realmente lo que está pasando, así que leeré un poco sobre ajax hasta entenderlo.

Muchísimas gracias ^.^' y perdonad las molestias.


POR CIERTO, EDITO:


Me percaté que si fuerzas al condicional a poner una condición diferente, para pasar de nivel y burlar a la respuesta real, tira el error que pusiste en ajax diciendo intento de hack.

Muchas gracias por ese detalle, se agradece mucho =P