Foros del Web » Programando para Internet » PHP »

Ayuda con estoo :'(

Estas en el tema de Ayuda con estoo :'( en el foro de PHP en Foros del Web. Hi, aqui tengo un codigo, de un sistema de preguntas, o sea, es como una especie de reto que quiero poner en mi web, o ...
  #1 (permalink)  
Antiguo 06/03/2003, 13:51
 
Fecha de Ingreso: noviembre-2002
Ubicación: http://localhost/
Mensajes: 195
Antigüedad: 21 años, 5 meses
Puntos: 1
Ayuda con estoo :'(

Hi, aqui tengo un codigo, de un sistema de preguntas, o sea, es como una especie de reto que quiero poner en mi web, o sea, en una parte de mi web, habra una pregunta con un input, si alguien contesta bien esa pregunta se ira a la pagina de la pregunta 2 y asi sucesivamente..

Aqui esta el codigo de las 2 paginas que he hecho, la primera y la 2da, las dos son para probar por eso algunos valores se llaman "prueba" y cosas asi..

La primera no tiene problemas, esta es la primera:

<?
$pregunta1="
<html>
<body>
<form action='p2.php' method='get'>
<font face='arial' size='2' color='black'>prueba</font>
<input type='text' name='p1'>
<input type='submit'>
</form>
</body>
</html>";
$cerror="
'<font face='verdana' size=1>'Tienes problemas con tus cookies, por favor, habilita las cookies para poder ver el torneo'</font>'';
";
setcookie("1","p1",time()+3600,"","");
If(isset($_COOKIE[1])){
echo "$pregunta1"; }
else {
echo "$cerror"; }
?>
-----------------------------------------------------------------------

y esta es la segunda (p2.php)

<?
$pregunta2="
<html>
<body>
<form action='p3.php'>
<font face='arial' size='2' color='black'>prueba</font>
<input type='text' name='p2'>
<input type='submit'>
</form>
</body>
</html>";
$cerror="
echo 'Tienes problemas con tus cookies, por favor, habilita las cookies para poder ver el torneo';
";
$verificar="
If($p1==bien){
echo '$pregunta2';
} else {
echo 'Respuesta equivocada'; }

setcookie("2","p2",time()+3600,"","");
If(isset($_COOKIE[2])) and (isset($_COOKIE[1])) {
echo "$verificar"; }
else {
echo "$cerror"; }
?>

--------------------------------

en la segunda me tira un error no se por que, me dice esto:

"parse error, unexpected T_LNUMBER on line 21"

como ven, dice que el error esta en la linea 21 y la linea 21 es:

setcookie("2","p2",time()+3600,"","");

alguna ayuda?
  #2 (permalink)  
Antiguo 06/03/2003, 13:59
 
Fecha de Ingreso: noviembre-2002
Ubicación: http://localhost/
Mensajes: 195
Antigüedad: 21 años, 5 meses
Puntos: 1
uppss jiji que tonto soy... jeje olvide un "; jejeje sorry

pues bueno gracias de todas formas, pero, aunque se lo puse, tengo otro error y este si que no se donde es..

el error es:
unexpected T_LOGICAL_AND on line 22

y la linea 22 es
If(isset($_COOKIE[2])) and (isset($_COOKIE[1])) {
alguna ayuda?

y ademas no se quiere crear la cookie 2

Última edición por White_Devi; 06/03/2003 a las 14:03
  #3 (permalink)  
Antiguo 06/03/2003, 14:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tenías un pequeño grannn lio con los parentesis .. he de ahí el error de "logica" ... En uno de ellos estabas cerrando el if ..y luego intentabas meterle el AND .. q por cierto en PHP se suele usar mas && para and y || para or ... aunque puedes usarlo igualmente ..
Código PHP:
If (isset($_COOKIE['2']) && isset($_COOKIE['1'])){ 
Puse tambien '...' en los indices del array $_COOKIE .. por sia caso ..


Un saludo,
  #4 (permalink)  
Antiguo 06/03/2003, 17:28
 
Fecha de Ingreso: noviembre-2002
Ubicación: http://localhost/
Mensajes: 195
Antigüedad: 21 años, 5 meses
Puntos: 1
Hi, Gracias por la aclaracion Cluster, ya lo resolvi Gracias realmente me ayudaste :D

Pero ahora tengo otro problema (y ya aregle lo de las cookies, era que no las tenia habilitadas jeje)

pero mi problema es aqui :

Código PHP:
 $verificar="
If('$p1=bien'){
echo '$pregunta2';
} else {
echo 'Respuesta equivocada'; }"
;

setcookie("2","p2",time()+3600,"","");
If(isset(
$_COOKIE[2]) && isset($_COOKIE[1])) {
echo 
"$verificar"; }
else {
echo 
"$cerror"; } 
no se si me entenderan la idea de ese script, pero lo que quiero es que si la primera cookie y la segunda se crearon, que compruebe la respuesta de la primera pregunta, y si la respuesta de la primera es "bien" que pase a la segunda pregunta, si no que ponga "respuesta equivocada" pero lo que hace es, que me tira SIEMPRE el valor de $verificar, sin importar que respuesta ponga ademas en lugar de ponerme el formulario como lo quiero, me pone todo el script de $verificar como si fuera un texto, o se,a me imprime el script en lugar de verificar la respuesta..

Alguna ayuda?
  #5 (permalink)  
Antiguo 06/03/2003, 19:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
setcookie("2","p2",time()+3600,"","");
If(isset($_COOKIE[2]) && isset($_COOKIE[1])) {
echo "$verificar"; }
else {
echo "$cerror"; }

Eso así en ese orden no lo puedes hacer .. Para que "PHP" se entere de que en $_COOKIE tiene esas cookies que has guardado tienes que enviar la página al servidor .. O como dice el manual de PHP "las cookies (y sesiones) no quedarán dispinibles hasta la próxima petición al servidor";

Así q te va hacer falta un tal p3.php .. en p2.php defines la cookie o no .. y en p3.php haces el IF ese con la validacion de ambas cookies (la 1 y 2) ..

Y por lo mismo . no se ni como te funciona el p1.php pues hace la misma cosa ...

Ademas , ese "IF" que haces el caracter de comparación es == no = q es asignación .. Esas comillsa simples ahí pueden hacer que no se interprete el valor de $variable .. En fin ... creo q deberias repasar el manual de php en sus primeros capítulos sobre la "sintax" y estructura de una aplicación en PHP ... (www.php.net/manual/es .. por si acaso quieres repasarlo)

Tambien una recomendación sobre el estilo de programación:
Si usas como se vé bloques de código para presentarlo o no via tu actual echo $codigo ... Sería mas claro y funcional tu código si usases funciones en lugar de meter tu código en una variable .. Con eso se ejecuta tu código cuando lo llames y no siempre a la hora de definir la variable con ese código .. Lo mismo la función puede devolverte algun valor o simplemente hacer su proceso y listo ... (recomendable que las funciones SOLO devuelvan valores (return) en la medida de lo posible ...

Un saludo,

Última edición por Cluster; 06/03/2003 a las 19:25
  #6 (permalink)  
Antiguo 07/03/2003, 14:37
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Como bien ha dicho Cluster, mejor usa una funcion. Pero si aun tienes curiosidad de como hacer lo que pretendes, mira en el manual la funcion eval().

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 08/03/2003, 15:07
 
Fecha de Ingreso: noviembre-2002
Ubicación: http://localhost/
Mensajes: 195
Antigüedad: 21 años, 5 meses
Puntos: 1
Hola de nuevo jeje, perdon por la demora, es que tenia prob de conexion, pues bien auqi estoy y gracias cluster por tus comentarios y tambien gracias a josemi...

pues bien, cambie los archivos P1 y P2 y estoy haciedno alpaso paso por paso y me da el mismo error (las cookies no se crean)

aqui estan los archivos:
===== P1========
Código PHP:
<?
$pregunta1
="<form action='p2.php' method='get'>
<font face='verdana' size='2'>Pregunta 1</font>
<br>
<input type='text' name='p1'>
<br>
<input type='submit' value='Ir a probar'></form>"
;

setcookie("1","p1",time()+3600,"","");

If(isset(
$_COOKIE['1'])) {
echo 
"$pregunta1"; } else {
echo 
'Mal';}

?>
ahi todo va bien menos por la cookie (lo se por que lo probe con otra cookie que cree en otro archivo)

======= P2=======
Código PHP:
<?
$pregunta2
="
<form action='p3.php' method='get'>
<font face='verdana' size='2'>Pregunta 2</font>
<br>
<input type='text' name='p2'>
<br>
<input type='submit' value='Ir a probar'></form>"
;
$p1=$_GET['p1'];
$resp1="bien";

If (
$p1==$resp1) {
echo 
"$pregunta2";  } else { echo "mal"; }

If (isset(
$_COOKIE['1'])){
setcookie("2","p2",time()+3600,"","");
echo 
"<br><font face='verdana' size='2'>Ok</font>";

else 

echo 
"<br><font face='verdana' size='2'>Cookie Prob</font>"
}

If (isset(
$_COOKIE['2'])){
echo 
"<br><font face='verdana' size='2'>Creada</font>";} else { echo "<br><font face='verdana' size='2'>Sin Crear</font>"; }
Aqui tambien me pasa lo mismo y lo se por que lo probe con la misma cookie, y nada...

Quien me puede dar un consejo o ayudarme con ese codigo o algo asi??? PLEASE

(P.D. intente con funciones pero no se mucho al respecto y lei el manual pero no comprendi muy bien su uso, intente usarla me dio un error, no se si yo sere demasiado tonto..)
bye gracias y espero su ayuda..
  #8 (permalink)  
Antiguo 08/03/2003, 15:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Te lo intenté explicar en un mensaje anterior ..

Esto NO PUEDES hacerlo en un mismo script:

setcookie("1","p1",time()+3600,"","");

If(isset($_COOKIE['1'])) {
echo "$pregunta1"; } else {
echo 'Mal';}

Las cookies (o sesiones) SOLO quedaran disponibles cuando hagas la próxima petición a la página .. Bien porque hagas ese "if" en tu p2.php .. o porque hagas una recarga de esa página automaticamente tras el setcookie() ..

Un salduo,
  #9 (permalink)  
Antiguo 08/03/2003, 15:47
 
Fecha de Ingreso: noviembre-2002
Ubicación: http://localhost/
Mensajes: 195
Antigüedad: 21 años, 5 meses
Puntos: 1
Ohhhh ok gracias, ahora entiendo, Mil gracias cluster..

Una pequeña duda que no tiene nada que ver con este tema, he leido muchisimas veces varios manuales y tutoriales sobre funciones, y no entiendo algo..

cuando quiero hacer una funcion de lo que sea, no se que poner en los parentesis, o sea, por ejemplo:

si quisiera hacer una funcion llamada "prueba"

pondria..

Function prueba(que pongo aqui?????)
{
la accion a realizar;
por que tengo que poner "return la accion hecha"??????;
}

no entiendo eso.. please si puedes ayudarme te lo agradeceria mucho..


gracias
  #10 (permalink)  
Antiguo 08/03/2003, 16:05
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Entre los parentesis pones las variables que recogen los valores que pasas como parametros a la funcion. Por ejemplo:
Código PHP:
function sumar ($operando1,$operando2) {
  
$suma=$operando1 $operando2;
  return 
$suma;
}

$resultado=suma(10 20 );
echo 
$resultado
En este ejemplo, al llamar a la funcion sumar() esta recoge el primer parametro (10) en la variable $operando1 y el segundo (20) en $operando2. Dentro de la funcion se usan estas variables para realizar la accion y se devuelve el resultado. Puede que tengas alguna funcion que no necesite devolver ningun valor.

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #11 (permalink)  
Antiguo 08/03/2003, 16:09
 
Fecha de Ingreso: noviembre-2002
Ubicación: http://localhost/
Mensajes: 195
Antigüedad: 21 años, 5 meses
Puntos: 1
Gracias, si has sido de ayuda :D jiji

Dejame hacer unas pruebas a ver si me funciona bien lo que entendi :D

Mil gracias :D
  #12 (permalink)  
Antiguo 08/03/2003, 19:18
 
Fecha de Ingreso: noviembre-2002
Ubicación: http://localhost/
Mensajes: 195
Antigüedad: 21 años, 5 meses
Puntos: 1
hi, trate de seguir el consejo de Cluster pero aun no me quiere crear la cookie

pues otra pagina llamada prueba.php y puse
=======prueba.php=======
Código PHP:
<? 
setcookie
("t1","p1",time()+3600,"",""); 
echo 
"<font face='verdana' size='2'><b><a href='prueba1.php'>empezar</a></b></font>";
?>
las cookies no se estan creando, pero realmente no se que pueda ser...
esta es la pagina 2 (ahora llamada prueba1.php)
=======prueba1.php=======
Código PHP:
<?
$pregunta1
="<form action='p2.php' method='get'>
<font face='verdana' size='2'>Pregunta 1</font>
<br>
<input type='text' name='p1'>
<br>
<input type='submit' value='Ir a probar'></form>"
;

If(isset(
$_COOKIE['t1'])) {
echo 
"$pregunta1"; } else {
echo 
'Mal';}

?>
creo que aun me falta demasiado por aprender... :-\

alguna ayuda???
  #13 (permalink)  
Antiguo 08/03/2003, 19:37
 
Fecha de Ingreso: noviembre-2002
Ubicación: http://localhost/
Mensajes: 195
Antigüedad: 21 años, 5 meses
Puntos: 1
hi, trate de seguir el consejo de Cluster pero aun no me quiere crear la cookie

pues otra pagina llamada prueba.php y puse
=======prueba.php=======
Código PHP:
<? 
setcookie
("t1","p1",time()+3600,"",""); 
echo 
"<font face='verdana' size='2'><b><a href='prueba1.php'>empezar</a></b></font>";
?>
las cookies no se estan creando, pero realmente no se que pueda ser...
esta es la pagina 2 (ahora llamada prueba1.php)
=======prueba1.php=======
Código PHP:
<?
$pregunta1
="<form action='p2.php' method='get'>
<font face='verdana' size='2'>Pregunta 1</font>
<br>
<input type='text' name='p1'>
<br>
<input type='submit' value='Ir a probar'></form>"
;

If(isset(
$_COOKIE['t1'])) {
echo 
"$pregunta1"; } else {
echo 
'Mal';}

?>
creo que aun me falta demasiado por aprender... :-\

alguna ayuda???
  #14 (permalink)  
Antiguo 08/03/2003, 19:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El código funciona bien (lo probé .. ) .. Es decir:

1) Ejecutas el codigo prueba.php .. eso crea la cookie.
2) Sale el formulario pues se cumple que $_COOKIE['ti'] está definida (isset()) ...

Recargas la página prueba1.php (pues ahí es donde manda prueba.php ... con el ink) y al tiempo q expire la cookie ya no se cumple la condición de existencia de la cookie y muestra el "else" con "MAL" ...

(por supuesto le bajé el tiempo de expiración a unos 25 segundos .. 3600 es 1 hora!!! ...)

Código PHP:
If(isset($_COOKIE['t1'])) {
echo 
"$pregunta1";
} else {
echo 
'Mal';

Revisa tu navegador si aceptas cookies .. y busca en tu pc la cookie de nombre t1 .. por algun lado debe aparecerte ..

A todo esto .. q versión de PHP usas? .. el array $_COOKIE solo está disponible desde PHP 4.1.x en adelante ..


Un saludo,
  #15 (permalink)  
Antiguo 09/03/2003, 08:11
 
Fecha de Ingreso: noviembre-2002
Ubicación: http://localhost/
Mensajes: 195
Antigüedad: 21 años, 5 meses
Puntos: 1
Hey al parecer era por la version del php, por que, instale el php 4.3 y me funciono pero cuando la pruebo en un server que la subi, no quiere funcionar.. :D

GRacias :D pero ahora tengo otro problema (yo si molesto huh?)
y es que ahora cree un archivo llamado p3.php y no me quiere leer la cookie t2

este es el codigo de la p2.php
===========P2====
Código PHP:
<?
setcookie
("t3","p3",time()+30,"","");
$pregunta2="
<form action='p3.php' method='get'>
<font face='verdana' size='2'>Pregunta 2</font>
<br>
<input type='text' name='p2'>
<br>
<input type='submit' value='Ir a probar'></form>"
;
$p1=$_GET['p1'];
$resp1="bien";

If (
$p1==$resp1) {
echo 
"$pregunta2";  } else { echo "mal"; }

If (isset(
$_COOKIE['t1'])){

echo 
"<br><font face='verdana' size='2'>Ok</font>";

else 

echo 
"<br><font face='verdana' size='2'>Cookie Prob</font>"
}

If (isset(
$_COOKIE['t2'])){
echo 
"<br><font face='verdana' size='2'>Creada</font>";} else { echo "<br><font face='verdana' size='2'>Sin Crear</font>"; }
===============
Ahi creo la cookie t3 y en la pagina p3.php la verifico...

Este es el codigo de la P3.php
=====p3.php=====
Código PHP:
<?
$pregunta3
="
<form action='p4.php' method='get'>
<font face='verdana' size='2'>Pregunta 3</font>
<br>
<input type='text' name='p3'>
<br>
<input type='submit' value='Ir a probar'></form>"
;
$p2=$_GET['p2'];
$resp2="bien";

If (
$p2==$resp2) {
echo 
"$pregunta3";  } else { echo "Mal"; }

If (isset(
$_COOKIE['t3'])){
echo 
"<br>Bien";} 
else {
 echo 
"<br><font face='verdana' size='2'>Mal</font>"
}
Alguna ayuda?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:48.