在调试一个程序的时候发现很奇怪的现象,post传过来的值再某些地方为空,先看下面的代码

 <?php
if($_POST['submit'] == 'Add'){
if($_POST['type']='movie' && $_POST['movie_type'] == ''){
header('Location:form4.php');
}
}
?>
<html>
<head>
<title>Multipurpose Form</title>
</head>
<body>
<?php if($_POST['submit'] == 'Add'){
echo '<h1>Add '.ucfirst($_POST['type']).'</h1>';
?>
<form action="form4b.php" method="post">
<input type="hidden" name="type" value="<?php echo $_POST['type'];?>"/>
<table>
<tr>
<td>Name</td>
<td><?php echo $_POST['name']?>
<input type="hidden" name="name" value="<?php echo $_POST['name']?>"/>
</td>
</tr>
<?php if($_POST['type'] == 'movie') {?>
<tr>
<td>Movie type</td>
<td><?php echo $_POST['movie_type']?> <input type="hidden" name="movie_type" value='<?php echo $_POST["movie_type"]?>'/></td>
</tr>
<tr>
<td>Year</td>
<td><input type="text" name="year"/></td>
</tr>
<tr><td>Movie Description</td>
<?php } else
{ echo '<tr><td>Biography</td>'; }
?>
<td><textarea name="extra" id="" cols="60" rows="5"></textarea></td>
</tr>
<tr>
<td colspan="2" style="text-algin:center;">
<?php
if(isset($_POST['debug'])){
echo '<input type="hidden" name="debug" value="on">';
}
?>
<input type="submit" name="submit" value="Add" />
</td>
</tr>
</table>
</form>
<?php
}
else if($_POST['submit']=='Search'){
echo '<h1>Search for '.ucfirst($_POST["type"]).'</h1>';
echo '<p>Searching for '.$_POST["name"].'...</p>';
} if(isset($_POST['debug'])){
echo '<pre>';
print_r($_POST);
echo '</pre>';
}
?>
</body>
</html>

在第29行是要根据上一个页面传递过来的值来输出信息的,但是即使传递过来的值是movie,还是没有输出想要的值,我我在很多地方都添加了echo($_POST['type']);这一句话发先在代码最顶端还能输出movie 的,第二行下面还是能够输出,就是在第三行下面就没有值了,这里你可能也发现错误了,if($_POST['type']='movie',这一句,本来是判断语句,结果少写了一个等号变成了赋值语句,初学者错误啊!!!!!!

正确的写法应该是if($_POST['type']=='movie' && $_POST['movie_type'] == '')

05-22 05:02