说我的PHP代码是
<?php
// Get form variables using POST method
$MarriagePostMortem=stripslashes($_POST['MarriagePostMortem']);
$AutoSavesToKeep=stripslashes($_POST['AutoSavesToKeep']);
// Open and write file
$myFile="S3S.cfg";
$fh = fopen($myFile, 'w+') or die("can't open file");
fwrite($fh, "The Sims 3 Starter Configuration
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
MarriagePostMortem $MarriagePostMortem
AutoSavesToKeep $AutoSavesToKeep
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-");
fclose($fh);
//echo "file written\n";
?>
我想将文件直接发送给用户下载而不保存到服务器。我真的并不是那么优秀的PHP,那么我需要添加/更改才能做到这一点?
答案 0 :(得分:8)
header ("Content-Type: application/octet-stream");
header ("Content-disposition: attachment; filename=S3S.cfg");
echo $string; //the string that is the file
答案 1 :(得分:6)
继续你应该怎么做,你的html标签应该是小写的&amp;除非你输出一个值表,否则不要使用表格,使用带有css的div。您还可以回发到脚本,因为从表单收到的变量是特定的,您只需检查正确的值,然后将数据发送回用户。
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
$mpm = (!empty($_POST['mpm']) && ($_POST['mpm']=='true' || $_POST['mpm']=='false'))?$_POST['mpm']:die('Wrong parameter type');
$astk = (!empty($_POST['astk']) && is_numeric($_POST['astk']))?$_POST['astk']:die('Wrong parameter type');
$content = "The Sims 3 Starter Configuration".PHP_EOL;
$content .= "-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-".PHP_EOL;
$content .= "MarriagePostMortem $mpm".PHP_EOL;
$content .= "AutoSavesToKeep $astk".PHP_EOL;
$content .= "-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-".PHP_EOL;
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename=S3S.cfg');
header('Content-Length: '.strlen($content));
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
header('Pragma: public');
echo $content;
exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sims 3 Starter Configuration</title>
</head>
<body>
<h1>Sims 3 Starter Configuration</h1>
<form action="" method="post">
<input type="reset" value="Clear changes">
<br />
<p>marriagepostmortem
<select name="mpm">
<option value="true">enabled</option>
<option value="false" selected="selected">disabled</option>
</select>
Keep marriage lines on family tree entries after death. experimental!</p>
<p>autosavestokeep
<select name="astk">
<option value="1">1</option>
<option value="2" selected="selected">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
Number of autosaves to keep.</p>
<p><input type="submit" value="Generate"></p>
</form>
<p>Drag the file onto the sims 3 starter to add configurations.</p>
</body>
</html>