elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  No funciona un programa con "$name = trim(fgets(STDIN))"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No funciona un programa con "$name = trim(fgets(STDIN))"  (Leído 3,192 veces)
Linton

Desconectado Desconectado

Mensajes: 239



Ver Perfil
No funciona un programa con "$name = trim(fgets(STDIN))"
« en: 26 Noviembre 2013, 17:14 pm »

Estoy con un manual de PHP y me encuentro este sencillo programa:

Código
  1. <?php
  2. echo "Hello there. So I hear you're learning to be a PHP programmer!\n";
  3. echo "Why don't you type in your name for me:\n";
  4. $name = trim(fgets(STDIN));
  5. echo "\nThanks, " . $name . ", it's really nice to meet you.\n\n";
  6. ?>

Se supone que solicita el nombre del usuario y responde con un mensaje de bienvenida. Lo he probado, y aparece esto:

Hello there. So I hear you're learning to be a PHP programmer! Why don't you type in your name for me:
Notice: Use of undefined constant STDIN - assumed 'STDIN' in C:\xampp\htdocs\htdocs\php28\index.php on line 5

Warning: fgets() expects parameter 1 to be resource, string given in C:\xampp\htdocs\htdocs\php28\index.php on line 5
Thanks, , it's really nice to meet you.


¿Dónde está el fallo? Gracias, un saludo.


En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: No funciona un programa con "$name = trim(fgets(STDIN))"
« Respuesta #1 en: 26 Noviembre 2013, 17:20 pm »

Citar
$name = trim(fgets(STDIN));

Bueno, nunca use fgets en PHP, pero tiene que esta mal. Si te fijas la ayuda que da la pagina de PHP acerca de fgets dice:

Citar
string fgets ( resource $handle [, int $length ] )
Obtiene una línea desde el puntero al fichero.

No veo tu handle, ni el argumento opcional lenght.. le estas pasando como argumento a la función un string, "STDIN", eso no es un handle..

PD: El handle es una variable, que "apunta" a un archivo abierto previamente..

Saludos!


En línea

Saberuneko


Desconectado Desconectado

Mensajes: 2.182



Ver Perfil WWW
Re: No funciona un programa con "$name = trim(fgets(STDIN))"
« Respuesta #2 en: 26 Noviembre 2013, 17:25 pm »

Necesitas utilizar php://stdin

Código
  1. $stdin = fopen('php://stdin', 'r');

Fuentes:
http://stackoverflow.com/questions/2929629/how-do-i-write-a-command-line-interactive-php-script
http://php.net/manual/es/features.commandline.io-streams.php
En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: No funciona un programa con "$name = trim(fgets(STDIN))"
« Respuesta #3 en: 26 Noviembre 2013, 17:29 pm »

Mmm.. pero ahí también dice:

Código:
$line = trim(fgets(STDIN)); // lee una línea de STDIN

Veo que lo que yo decía, no esta bien del todo.. proba:

Flujo abierto a stdin. Ahorra tener que abrirlo con
Código:
<?php
$stdin = fopen('php://stdin', 'r');
?>
como decía Saberuneko
En línea

Linton

Desconectado Desconectado

Mensajes: 239



Ver Perfil
Re: No funciona un programa con "$name = trim(fgets(STDIN))"
« Respuesta #4 en: 26 Noviembre 2013, 17:35 pm »

Uf no he entendido casi nada, estoy muy verde en PHP  :-( ¡Gracias de todas formas, un saludo!
En línea

dRak0

Desconectado Desconectado

Mensajes: 234


Ver Perfil WWW
Re: No funciona un programa con "$name = trim(fgets(STDIN))"
« Respuesta #5 en: 27 Noviembre 2013, 08:21 am »

Segun lo q lei qdaria
<?php
$stdin = fopen('php://stdin', 'r');
echo trim(fgets($stdin));
?>
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Busco "Programa" de Conversión de ".ram" a ".Mp3" ???
Multimedia
Ad0nis 2 2,587 Último mensaje 13 Mayo 2004, 23:05 pm
por Ad0nis
Esto previene inyeccion sql if(!ereg("^[a-zA-Z0-9_\.-]+$", trim($user))) ?
Nivel Web
sissi 7 6,410 Último mensaje 23 Junio 2011, 19:16 pm
por Shell Root
"Call" no funciona con textbox pero, sí, con "cualquiertexto" « 1 2 »
Programación Visual Basic
usuario oculto 12 5,869 Último mensaje 16 Julio 2011, 17:05 pm
por usuario oculto
recursos visual basic, """"""proceso inmortal"""""
Análisis y Diseño de Malware
Dark4ngel 7 13,202 Último mensaje 3 Noviembre 2011, 10:42 am
por Dark4ngel
"Trim" en los ssd
Hardware
Zorronde 2 1,773 Último mensaje 25 Octubre 2014, 06:31 am
por Randomize
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines