• Viernes 8 de Noviembre de 2024, 09:53

Autor Tema:  fallo en el codigo  (Leído 1457 veces)

mixmax

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
fallo en el codigo
« en: Sábado 21 de Febrero de 2009, 16:22 »
0
Mi idea es hacer con este codigo php editar un texto txt, pero cuando entre a editarlo tenga que poner usuario y contraseña.

Código: PHP
  1. <?php
  2. // Define el usuario y la contraseña de acceso
  3. $username = "nombredeusuario";//Aqui el nombre de usuario
  4. $password = "password";// Aqui la contraseña
  5. if ($_POST['txtUsername'] != $username || $_POST['txtPassword'] != $password) {
  6. ?>
  7. <style type="text/css">
  8. <!--
  9. .Estilo1 {
  10.     font-size: 18px;
  11.     font-family: Verdana, Arial, Helvetica, sans-serif;
  12. }
  13. -->
  14. </style>
  15.  
  16. <h2 class="Estilo1">Login</h2>
  17. <form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  18. <p><label for="txtUsername">Username:</label>
  19. <br><input type="text" title="Introduce nombre de usuario" name="txtUsername"></p>
  20. <p><label for="txtpassword">Password:</label>
  21. <br><input type="password" title="Introduce la contraseña" name="txtPassword"></p>
  22. <p><input type="submit" name="Submit" value="Login"></p>
  23. </form>
  24. <?php
  25. }else {
  26. ?>
  27. <p><?php
  28. $fichero = "texto.txt";
  29. $texto = $_POST["texto"];
  30. if($texto != ''){
  31.    if($fp = fopen($fichero,"w+")){
  32.       fwrite($fp,stripslashes($texto));
  33.       echo 'Archivo modificado<br><br>';
  34.    }
  35.    fclose($fp);
  36. }
  37. $fp = fopen($fichero,"r");
  38. $contenido = fread ($fp, filesize ($fichero));
  39. fclose($fp);
  40. echo "<form method='POST'><textarea name='texto'>$contenido</textarea><br><input type='Submit' value='Guardar'></form>";
  41. ?></p>
  42. <?php
  43. }
  44. ?>
  45.  

Lo probé una pagina de iespana, meti usuario y contraseña, y modifique el texto. El problema es que cuando le doy a guardar no me pone Archivo Modificado, si no que me vuelve a la pagina de Login.

¿Que ocurre?¿Alguien me sabria decir que falla en este codigo?

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: fallo en el codigo
« Respuesta #1 en: Sábado 21 de Febrero de 2009, 22:26 »
0
Tu falla es que preguntas primero si en el formulario viene el login y el password y si estos coinciden con unas variables que has establecido antes. Cuando ingresas y te aparece el formulario para editar el texto, al darle submit esta comparación hace que de nuevo te ingrese al formulario de identificación (donde ingresas login y password).

Lo que puedes hacer es agregar 2 campos hidden que coincidan con los nombres de los campos login y password y en ellos guardes esos parámetros; o sea:

Código: PHP
  1. $campos_identificacion = "<input type='hidden' name='txtUsername' value='" . $_POST["txtUsername"] . "' /><input type='hidden' name='txtPassword' value='" . $_POST["txtPassword"] . "' />";
  2. echo "<form method='POST'><textarea name='texto'>$contenido</textarea><br><input type='Submit' value='Guardar'>$campos_identificacion</form>";
  3.  

También te recomiendo que aprendas a utilizar sesiones, es muy necesario para la asociación de usuarios y también cuando deseas mantener datos entre llamados HTTP (cuando sigues un link, haces un submit en un formulario, etc).

:suerte:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

mixmax

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: fallo en el codigo
« Respuesta #2 en: Domingo 22 de Febrero de 2009, 12:47 »
0
Cita de: "shadow_rev"
Tu falla es que preguntas primero si en el formulario viene el login y el password y si estos coinciden con unas variables que has establecido antes. Cuando ingresas y te aparece el formulario para editar el texto, al darle submit esta comparación hace que de nuevo te ingrese al formulario de identificación (donde ingresas login y password).

Lo que puedes hacer es agregar 2 campos hidden que coincidan con los nombres de los campos login y password y en ellos guardes esos parámetros; o sea:

Código: PHP
  1. $campos_identificacion = "<input type='hidden' name='txtUsername' value='" . $_POST["txtUsername"] . "' /><input type='hidden' name='txtPassword' value='" . $_POST["txtPassword"] . "' />";
  2. echo "<form method='POST'><textarea name='texto'>$contenido</textarea><br><input type='Submit' value='Guardar'>$campos_identificacion</form>";
  3.  

También te recomiendo que aprendas a utilizar sesiones, es muy necesario para la asociación de usuarios y también cuando deseas mantener datos entre llamados HTTP (cuando sigues un link, haces un submit en un formulario, etc).

:suerte:

Lo he probado y parece que tampoco va. Sigue estando igual.
Por cierto, se me olvido decir una cosa: Escribo, le doy a guardar, luego me meto en texto.txt, y no me pone nada de lo que he escrito en el.
Me parece que el fallo está en la función fread.

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: fallo en el codigo
« Respuesta #3 en: Domingo 22 de Febrero de 2009, 22:38 »
0
Intenta haciendo las comparaciones de string con strcmp(). En cuanto a que no te escribe en el archivo, revisa si él es localizado correctamente por el PHP (así como lo tienes, debería estar en la misma ruta del script, creo). Puedes ensayar si fread() está funcionando, editando el archivo desde un editor de texto y viendo si lo carga en el campo de texto; también es probable que fwrite() no se esté ejecutando, en ese caso revisa los permisos del archivo (en Linux, chmod a+rw nombre_archivo.txt, en Windows le das click derecho, propiedades, seguridad y administras los permisos).

:suerte:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas