上傳文件到指定文件夾,共享數據和腳本,文件驗證,腳本之間的通信

(《Head First PHP & MySQL》學習記錄)


add-score.php

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Guitar Wars - Add Your Score</title>
</head>

<body>
<h1>Guitar Wars - Add Your Score</h1>
<?php
	require_once('appvars.php'); //共享數據和腳本
	require_once('connectvars.php');
	
	if(isset($_POST['submit'])){
		$name=$_POST['name'];
		$score=$_POST['score'];
		$screenshot=$_FILES['screenshot']['name'];
		$screenshot_type=$_FILES['screenshot']['type'];
		$screenshot_size=$_FILES['screenshot']['size'];
		$output_form=false;
		
		if(!empty($name)&&!empty($score)&&!empty($screenshot)){
			if(is_numeric($score)){
				if((($screenshot_type=='image/pjpeg')||($screenshot_type=='image/jpeg')||($screenshot_type=='image/gif')||($screenshot_type=='image/png'))&&($screenshot_size<=GW_MAXFILESIZE)){ //文件驗證
					if($_FILES['screenshot']['error']==0){
						$target=GW_UPLOADPATH.$screenshot;
						if(move_uploaded_file($_FILES['screenshot']['tmp_name'],$target)){ //上傳文件到指定文件夾
							$dbc=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME) or die('Error connecting MySQL server.');
							$query="INSERT INTO guitarwars VALUES (0,NOW(),'$name','$score','$screenshot')";
							mysqli_query($dbc,$query);
							echo '<p>Thanks for adding your score!</p>';
							echo '<p>Name: '.$name.'<br />';
							echo 'Score: '.$score.'</p><br />';
							echo '<img src="'.GW_UPLOADPATH.$screenshot.'" alt="Score image" /></p>';
							echo '<p><a href="high-score.php"><<Back to High Score List</a></p>';
							mysqli_close($dbc);
						}
					}else{
						echo '<p>Sorry, there was something wrong when uploading your screenshot image. </p>';
						$output_form=true;
					}
				}else{
					echo '<p>The screenshot must be a GIF, JPEG or PNG image file and smaller than '.(GW_MAXFILESIZE/1024).' KB in size</p>';
					$output_form=true;
				}
			}else{
				echo '<p>Your score must be a number. </p>';
				$output_form=true;
			}
		}else{
			echo 'You haven\'t complete the form yet...';
			$output_form=true;
		}
	}else{
		$output_form=true;
	}
	if($output_form){
?>
		<form enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
        	<input type="hidden" name="MAX_FILE_SIZE" value="32768" />
        	<label for="name">Name: </label>
            <input type="text" id="name" name="name" value="<?php echo $name; ?>" /><br />
            <label for="score">Score: </label>
            <input type="text" id="score" name="score" value="<?php echo $score; ?>" /><br />
            <label for="screenshot">Screenshot: </label>
            <input type="file" id="screenshot" name="screenshot" /><br />
            <input type="submit" name="submit" value="Add" />
        </form>
<?php
	}
?>
</body>
</html>


high-score.php

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>High Score List</title>
</head>

<body>
	<h1>High Score List</h1>
    <p>Hey guitar warrior, do you have what it takes to crack the high score list? If so, <a href="add-score.php">add your own score</a>.</p>
<?php
	require_once('appvars.php');
	require_once('connectvars.php');
	
	$dbc=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME) or die('Error connecting MySQL server.');
	$query="SELECT * FROM guitarwars ORDER BY score DESC, date ASC";
	$result=mysqli_query($dbc,$query) or die('Error querying database.');
	echo '<table>';
	while($row=mysqli_fetch_array($result)){
		echo '<tr><td class="scoreinfo">';
		echo '<span>'.$row['score'].'</span><br />';
		echo '<strong>Name: </strong>'.$row['name'].'<br />';
		echo '<strong>Date: </strong>'.$row['date'].'</td>';
		if(is_file(GW_UPLOADPATH.$row['screenshot'])&&filesize(GW_UPLOADPATH.$row['screenshot'])>0){
			echo '<td><img src="'.GW_UPLOADPATH.$row['screenshot'].'" alt="Score image" /></td></tr>';
		}else{
			echo '<td><img src="'.GW_UPLOADPATH.'unverified.jpg'.'" alt="Unverified score" /></td></tr>';
		}
	}
	echo '</table>';
	mysqli_close($dbc);
?>
</body>
</html>

admin.php

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>High Score Administration</title>
</head>

<body>
	<h1>High Score Administration</h1>
    <p>Administrators only!</p>
	<?php
		require_once('appvars.php');
		require_once('connectvars.php');
		
		$dbc=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME) or die('Error connecting MySQL server. ');
		
		$query="SELECT * FROM guitarwars ORDER BY score DESC, date ASC";
		$result=mysqli_query($dbc,$query) or die('Error querying database. ');
		
		echo '<table>';
		while($row=mysqli_fetch_array($result)){
			echo '<tr><td><strong>'.$row['name'].'</strong></td>';
			echo '<td>'.$row['date'].'</td>';
			echo '<td>'.$row['score'].'</td>';
			echo '<td><a href="removescore.php?id=' . $row['id'] . '&date=' . $row['date'] . '&name=' . $row['name'] . '&score=' . $row['score'] . '&screenshot=' . $row['screenshot'] . '">Remove</a></td></tr>'; //腳本之間的通信
		}
		echo '</table>';
		mysqli_close($dbc);
	?>
</body>
</html>

removescore.php

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Remove Score</title>
</head>

<body>
<?php
	require_once('appvars.php');
	require_once('connectvars.php');
	
	if(isset($_GET['id'])&&isset($_GET['date'])&&isset($_GET['name'])&&isset($_GET['score'])&&isset($_GET['screenshot'])){
		$id=$_GET['id'];
		$date=$_GET['date'];
		$name=$_GET['name'];
		$score=$_GET['score'];
		$screenshot=$_GET['screenshot'];
	}
	else if(isset($_POST['id'])&&isset($_POST['name'])&&isset($_POST['score'])){
		$id=$_POST['id'];
		$name=$_POST['name'];
		$score=$_POST['score'];
	}
	else{
		echo '<p>Sorry, no score was specified for removal. </p>';
	}
	
	if(isset($_POST['submit'])){
		if($_POST['confirm']=='Yes'){
			@unlink(GW_UPLOADPATH.$screenshot);
			
			$dbc=mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Error connecting MySQL server. ');
			$query="DELETE FROM guitarwars WHERE id = $id LIMIT 1";
			mysqli_query($dbc,$query) or die('Error querying databse. ');
			mysqli_close($dbc);
			
			echo '<p>The score of '.$score.' for '.$name.'has been successfully removed. </p>';
		}else{
			echo '<p>Something wrong happened when removing the score. </p>';
		}
	}
	else if(isset($id)&&isset($name)&&isset($score)&&isset($date)&&isset($screenshot)){
		echo '<p>Are you sure you want to delete the following score? </p>';
		echo '<p><strong>Name: </strong>'.$name.'<br /><strong>Score: </strong>'.$score.'<br /><strong>Date: </strong>'.$date.'</p>';
		echo '<form method="post" action="removescore.php">';
		echo '<input type="radio" name="confirm" value="Yes" />Yes';
		echo '<input type="radio" name="confirm" value="No" checked="checked" />No<br />';
		echo '<input type="submit" name="submit" value="Submit" />';
		echo '<input type="hidden" name="id" value="'.$id.'" />';
		echo '<input type="hidden" name="name" value="'.$name.'" />';
		echo '<input type="hidden" name="score" value="'.$score.'" />';
		echo '</form>';
	}
	echo '<a href="admin.php"><<Back to admin page</a>';
?>
</body>
</html>

appvars.php
<?php
	define('GW_UPLOADPATH','images/');
	define('GW_MAXFILESIZE',32768);
?>

connectvars.php

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
</head>

<body>
<?php
	define('DB_NAME','maystudio');
	define('DB_USER','root');
	define('DB_PASSWORD','12345678');
	define('DB_HOST','127.0.0.1');
?>
</body>
</html>

代碼下載:http://download.csdn.net/detail/qq_17615475/9389018


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章