htmlspecialchars($ _ SERVER ['PHP_SELF'])

问题描述:

if($_POST) { 

$mysql_pass = ''; 

$connect = @mysql_connect($_POST['dbHost'], $_POST['dbUser'], $mysql_pass); 

if($connect) { 
if(@mysql_select_db($_POST['dbName'])) { 
    $dir = $_SERVER['SERVER_NAME']. $_SERVER['REQUEST_URI']; 
    $redirectUrl = str_replace("configForm.php","site/index", $dir); 
    print $redirectUrl; exit; 
    $dbConf = dirname(__FILE__).'/dbConfig/dbconf.php'; 
    $handle = fopen($dbConf, 'w') or die('Cannot open file: '.$dbConf); 
    $data = '<?php $userName="'.$_POST['dbUser'].'";'."\n"; 
    $data .= '$passWord=" ";'."\n"; 
    $data .= '$dbName="'.$_POST['dbName'].'";'."\n"; 
    $data .= '$host="'.$_POST['dbHost'].'"; ?>'; 
    fwrite($handle, $data); 
    header('Location: site/index'); 
} 
else { 
    $error = 'Could not select database.'; 
} 
} 

else $ error ='Not connected'; }

当上面的代码执行时,我的网页刚刚显示“localhost/www-edusec/site/index”。我不知道我在哪里做错了。我的表单动作是象下面这样:

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST">

action属性默认为当前页面无论如何,所以这段代码肯定是多余的。

问题是PHP_SELF也返回文件的路径。只需彻底摆脱行动路线,它应该可以正常工作。

编辑:

另外,你的脚本被切断一半的原因,你有一个exit;它打印出该目录之后。

+0

我根据你所说的做了一些编辑。但是,我收到了此消息“ CDbException CDbConnection无法打开数据库连接。” – jenny 2014-10-08 06:36:33

+0

这是你的SQL的一个不同的问题,我建议你在这里提出另一个关于这个错误的问题,以及你所有与连接有关的PHP代码,或者用你的SQL代码扩展这个问题。 – 2014-10-08 07:01:48