PHP - Duda trabajando con cadenas de texto

   
Vista:

Duda trabajando con cadenas de texto

Publicado por Cachi (33 intervenciones) el 07/11/2015 21:37:53
Hola !
A los golpes sigo intentando aprender y estoy tratando de hacer lo siguiente, pero nada me funciona !.

Quiero que un formulario recolecte un usuario, una contraseña y un comentario (el comentario lo quiero pasar predefinido en el formulario)

Luego quiero que al recibir los datos del formulario, chequear si tienen la longitud que quiero, si la contraseña tiene más de 7 caracteres, luego reemplazar una palabra del texto predefinido que le pasé, y por último mostrar el valro de las variables al finalizar el proceso.

Armé estos dos archivos pero no funciona... ¿qué estoy haciendo mal ? Alguien podrá echarme una manito ?

datos.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$comentario = 'PHP es un acrónimo recursivo que significa PHP Hypertext Pre-processor (inicialmente PHP
Tools, o, Personal Home Page Tools). Fue creado originalmente por Rasmus Lerdorf en 1994;
sin embargo la implementación principal de PHP es producida ahora por The PHP Group y
sirve como el estándar de facto para PHP al no haber una especificación formal. Publicado
bajo la PHP License, la Free Software Foundation considera esta licencia como software
libre.
Puede ser desplegado en la mayoría de los servidores web y en casi todoslos sistemas
operativos y plataformas sin costo alguno. El lenguaje PHP se encuentra instalado en más de
20 millones de sitios web y en un millón de servidores, el número de sitios en PHP ha
compartido algo de su preponderante sitio con otros nuevos lenguajes no tan poderosos
desde agosto de 2005.';
echo "<Head>";
echo "<Title>Datos</Title>";
echo "</Head>";
 
echo "<Body>";
echo "<form action=\"procesa.php\" method=\"POST\">";
echo "<p><b>Por favor ingrese u usuario, contraseña y comentario: </b></p>";
echo "<input name=\"usuario\" type=\"string\" />";
       echo " <input name=\"contrasena\" type=\"string\" />";
       echo " <input name=\"comentario\" type=\"string\" value=\"$comentario\" />";
       echo " <input name=\"submit\" type=\"submit\" class=\"texto\" value=\"Enviar\" />";
echo "</form>";
echo "</Body>";
?>

procesa.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
echo "<Head>";
echo "<Title>Procesado</Title>";
echo "</Head>";
echo "<Body>";
if (strlen($_POST["usuario"] >0) AND (strlen($_POST["contrasena"] >0) AND (strlen($_POST["comentario"] >0) {
  echo "todos los campos fueron completados, ok!";
  paso1= true
}
else {
  echo "uno o más campos estan vacios";
}
if (strlen($_POST["contrasena"] >7) {
  echo "La contrasena tiene mas de 7 caracteres, ok!";
  paso2= true
}
else {
  echo "los campos estan vacios";
}
$cadena= ($_POST["comentario"]
$cadena = str_replace("php","***",$cadena);
$usuario = ($_POST["usuario"];
$contrasena ($_POST["contrasena"];
IF paso1 AND paso2 {
  echo $usuario;
  echo $contrasena;
  echo $cadena;
}
?>

De nuevo gracias por ayudarme a aprender !!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de VRM

Duda trabajando con cadenas de texto

Publicado por VRM (171 intervenciones) el 08/11/2015 10:06:49
Hola:

En Procesa.php las lineas 8 y 15 no tienen ; al final.

Saludos de Víctor.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Duda trabajando con cadenas de texto

Publicado por Cachi (33 intervenciones) el 08/11/2015 15:57:11
Hola, Gracias!
Ya lo corregí, pero me da este error:

Parse error: syntax error, unexpected '{' in procesa.php on line 6

El nuevo procesa.php con tu corrección quedó así... cual es la falla ?
Gracias por su ayuda !!

procesa.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
echo "<Head>";
echo "<Title>Procesado</Title>";
echo "</Head>";
echo "<Body>";
if (strlen($_POST["usuario"] >0) AND (strlen($_POST["contrasena"] >0) AND (strlen($_POST["comentario"] >0) {
  echo "todos los campos fueron completados, ok!";
  paso1= true;
}
else {
  echo "uno o más campos estan vacios";
}
if (strlen($_POST["contrasena"] >7) {
  echo "La contrasena tiene mas de 7 caracteres, ok!";
  paso2= true;
}
else {
  echo "los campos estan vacios";
}
$cadena= ($_POST["comentario"]
$cadena = str_replace("php","***",$cadena);
$usuario = ($_POST["usuario"];
$contrasena ($_POST["contrasena"];
IF paso1 AND paso2 {
  echo $usuario;
  echo $contrasena;
  echo $cadena;
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Duda trabajando con cadenas de texto

Publicado por xve (5516 intervenciones) el 08/11/2015 20:48:21
Fijate que tienes los parentesis mal cerrados...

esta es tu linea actual...
1
if (strlen($_POST["usuario"] >0) AND (strlen($_POST["contrasena"] >0) AND (strlen($_POST["comentario"] >0) {
y así es como tiene que estar...
1
if (strlen($_POST["usuario"] >0) AND (strlen($_POST["contrasena"] >0)) AND (strlen($_POST["comentario"] >0)))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Duda trabajando con cadenas de texto

Publicado por Cachi (33 intervenciones) el 08/11/2015 21:11:39
Perfecto, gracias !, he ido avanzando y corrigiendo errores que me fueron apareciendo, pero me trabé en este error:

Parse error: syntax error, unexpected '$cadena' (T_VARIABLE) in procesa.php on line 21

¿Por favor alguien sabe Qué es lo que está mal ?

procesa.php quedó así ahora
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
echo "<Head>";
echo "<Title>Procesado</Title>";
echo "</Head>";
echo "<Body>";
if (strlen($_POST["usuario"] >0) AND (strlen($_POST["contrasena"] >0)) AND (strlen($_POST["comentario"] >0))) {
  echo "todos los campos fueron completados, ok!";
  $paso1 = true;
}
else {
  echo "uno o más campos estan vacios";
}
if (strlen($_POST["contrasena"] >7)) {
  echo "La contrasena tiene mas de 7 caracteres, ok!";
  $paso2 = true;
}
else {
  echo "los campos estan vacios";
}
$cadena= ($_POST["comentario"]
$cadena = str_replace("php","***",$cadena);
$usuario = ($_POST["usuario"];
$contrasena ($_POST["contrasena"];
IF $paso1 AND $paso2 {
  echo $usuario;
  echo $contrasena;
  echo $cadena;
}
?>

Gracias a quien pueda ayudarme !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet

Duda trabajando con cadenas de texto

Publicado por Lawliet (222 intervenciones) el 08/11/2015 21:49:14
Hola...

Tienes un error en la línea anterior al error, lo tienes de esta manera...

1
$cadena= ($_POST["comentario"]

Cuando deberías de tenerlo de la siguiente manera.

1
$cadena= $_POST["comentario"];

Sin el paréntesis al principio y con el punto y coma al final.

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Duda trabajando con cadenas de texto

Publicado por Cachi (33 intervenciones) el 08/11/2015 22:00:26
Gracias !, ya corregí eso y otros errores. Ahora ya no da mensajes de error, pero el resultado del procesamiento es erroneo.

Me explico: Sucede que ingreso los valores de los campos, pero el procesamiento me da los mensajes de error cómo si no hubiera ingresado nada.

Me salen estos mensajes de error: uno o más campos estan vacioscontraseña debe ser mayor a 7 caracteres

Como decía antes, yo ingreso valores, no debería dar vacío el resultado de la evaluación que hago en las líneas 6 y 13.
¿Qué es lo que está fallando ?

Vuelvo a dejar el código cómo está ahora el archivo procesa.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
echo "<Head>";
echo "<Title>Procesado</Title>";
echo "</Head>";
echo "<Body>";
if (strlen($_POST["usuario"] >0) AND (strlen($_POST["contrasena"] >0)) AND (strlen($_POST["comentario"] >0))) {
  echo "todos los campos fueron completados, ok!";
  $paso1 = true;
}
else {
  echo "uno o más campos estan vacios";
}
if (strlen($_POST["contrasena"] >7)) {
  echo "La contrasena tiene mas de 7 caracteres, ok!";
  $paso2 = true;
}
else {
  echo "contraseña debe ser mayor a 7 caracteres";
}
$cadena= $_POST["comentario"];
$cadena = str_replace("php","***",$cadena);
$usuario = $_POST["usuario"];
$contrasena = $_POST["contrasena"];
IF ($paso1 AND $paso2) {
  echo $usuario;
  echo $contrasena;
  echo $cadena;
}
?>

Gracias a quienes puedan ayudarme !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet

Duda trabajando con cadenas de texto

Publicado por Lawliet (222 intervenciones) el 08/11/2015 23:08:34
Hola...

Tienes mal la sintaxis de strlen, lo tienes de la siguiente manera...

1
strlen($_POST["usuario"] >0)

Cuando la sintaxis correcta sería la siguiente...

1
strlen($_POST["usuario"]) > 0

También te hago la observación que para operadores lógicos en PHP no se utiliza AND ni OR, para validar un AND se utiliza lo siguiente && y para validar un OR se utiliza lo siguiente ||.

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Duda trabajando con cadenas de texto

Publicado por Cachi (33 intervenciones) el 08/11/2015 23:31:32
Muchas gracias Lawliet !!

Ahora solucioné todo, Gracias de nuevo a todos los que en esta conversación me han ayudado !!

Para el caso que le sirva a alguien en el futuro:

El Archivo procesa.php ahora quedó así
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
echo "<Head>";
echo "<Title>Procesado</Title>";
echo "</Head>";
echo "<Body>";
if (strlen($_POST["usuario"]) >0 && (strlen($_POST["contrasena"]) >0) && (strlen($_POST["comentario"]) >0)) {
  echo "<p><b>todos los campos fueron completados, ok!</b></p>";
  $paso1 = true;
}
else {
  echo "uno o más campos estan vacios";
}
if (strlen($_POST["contrasena"]) >7) {
  echo "<p><b>La contrasena tiene mas de 7 caracteres, ok!</b></p>";
  $paso2 = true;
}
else {
  echo "<p>contraseña debe ser mayor a 7 caracteres</p>";
}
$cadena= $_POST["comentario"];
$cadena = str_replace("PHP","***",$cadena);
$usuario = $_POST["usuario"];
$contrasena = $_POST["contrasena"];
IF ($paso1 AND $paso2) {
  echo "<b><p>Usuario:</p></b>";
  echo $usuario;
  echo "<p></p>";
  echo "<b><p>Contraseña:</p></b>";
  echo $contrasena;
  echo "<p></p>";
  echo $cadena;
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar