2016-11-08 132 views
-2
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title><?php echo "Homework1_1"?></title> 
</head> 
<body> 

<form action="" method="post"> 
<input name ="name" type = "text" placeholder="Type your Name"> 
<input name = "age" type = "text" placeholder = "Type your age"> 
<input type = "submit"> 
</form> 
<?php 
if(isset($_POST["name"])){ 
$Name =["name"]; 
$Age = ["age"]; 
if(preg_match("[0-10]", $name)){ 
    echo "Failed, name can not be number"; 
} 
if(preg_match("/[a-zA-Z + ] +/",$ar)){ 
    echo "Failed, age cannot have letter"; 
} 
if((!preg_match("[0-10]", $Name))&&(!preg_match("/[a-zA-Z + ] +/",$Age))){ 
    echo "Welcome! Your name is $Name and you are $Age years old"; 
} 
} 
?> 
</body> 
</html> 

这是我的程序代码。 我希望如果我在$ Name = [“name”]中写入数字或在$ Age = [“age]中输入字母,网站将显示类似于块中的错误消息,但是当我运行代码并键入一些值两个框,网站每次显示我任何人都可以帮我preg_match?那有什么问题?

警告:的preg_match()预计参数2为字符串,阵列中 C中给出:\ XAMPP \ htdocs中\ php_workshop_1_citat \ GrundOvningar \ homework1_1_post.php 第18行

警告:的preg_match()预计参数2为字符串,阵列中 C中给出:\ XAMPP \ htdocs中\ php_workshop_1_citat \ GrundOvningar \ homework1_1_post.php 第21行

警告:的preg_match()预计参数2为字符串,阵列中 C中给出:\ XAMPP \ htdocs中\ php_workshop_1_citat \ GrundOvningar \ homework1_1_post.php 上线26

警告:的preg_match()预计参数2是字符串,阵列中 C中给出:\ XAMPP \ htdocs中\ php_workshop_1_citat \ GrundOvningar \ homework1_1_post.php 上线26

通知:Array对字符串的转换在 C:\ XAMPP \ htdocs中\ php_workshop_1_citat \ GrundOvningar \ homework1_1_post第27行上的.php

注意:数组字符串转换在 C:\ XAMPP \ htdocs中\ php_workshop_1_citat \ GrundOvningar \ homework1_1_post.php 第27行

欢迎您!你的名字是阵列,你是阵列年代

我做错了什么?也许我不需要使用preg_match?如果是这样,我该怎么办?

+0

[PHP:“注意:未定义变量”和“通知:未定义的索引”]的可能的复制(http://stackoverflow.com/questions/4261133/php -notice-undefined-variable-and-notice-undefined-index) –

+0

重新阅读你的课本。 – AbraCadaver

回答

3

PHP变量是大小写敏感的

if(isset($_POST["name"])) { 
    $name = $_POST["name"]; 
    $age = $_POST["age"]; 
    if(preg_match("[0-10]", $name)){ 
    echo "Failed, name can not be number"; 
    } 
    if(preg_match("/[a-zA-Z + ] +/", $age)) { 
    echo "Failed, age cannot have letter"; 
    } 
    if((!preg_match("[0-10]", $name)) && (!preg_match("/[a-zA-Z + ] +/",$age))) { 
    echo "Welcome! Your name is $Name and you are $Age years old"; 
    } 
} 
+0

为什么downvote? – Jaime

+0

不是我的失望,但它似乎是两个发布的答案确定两个不同的问题,并留下其他问题未解决。 – David

+0

你错过了'$ _POST ['name']'和'preg_match()'也没有正确的形成。 –

1

你的代码是错误的

$name =["name"]; 
$age = ["age"]; 

应该

$name = $_POST["name"]; 
$age = $_POST["age"]; 

而且,你的preg_match应该是:

对于数字:

preg_match("/[0-9]/", $name) 

对于字母:

preg_match("/[a-zA-Z]/", $age) 
+0

谢谢!现在我的程序没有显示任何错误,但是当我在名称框中输入数字时,例如3,网站显示我的名字是3.与年龄相同,但这不是我想要的。他们必须显示错误!你知道该怎么办? – javaprogrammer

+0

你的preg_match也是错误的,检查数字使用[0-9],并检查字母使用[a-zA-Z] –

+0

你的意思是哪个preg_match?这是我第一次在代码中使用preg_match,所以我不知道你的意思是什么 – javaprogrammer

相关问题