📄 install.php
字号:
<?
################################################################################
# phpQuestionnaire Version 2.2 #
# Copyright 2003-2005 chumpsoft, inc. March 28, 2005 #
################################################################################
# SCRiPTMAFiA 2005 - THE DiRTY HANDS ON YOUR SCRiPTS #
################################################################################
require("inc/init.php");
require("inc/efunctions.php");
error_reporting(0);
#-->> GET and POST Variables
$postvarnames = array("mysqlhost", "mysqluser", "mysqlpasswd", "mysqldb", "action", "apasswd", "language");
for ($i=0; $i<sizeof($postvarnames); $i++)
{
$varname = $postvarnames[$i];
$$varname = $HTTP_POST_VARS[$varname];
}
$language = '';
if ($HTTP_GET_VARS['language'] != '') { $language = $HTTP_GET_VARS['language']; }
elseif ($HTTP_POST_VARS['language'] != '') { $language = $HTTP_POST_VARS['language']; }
$GLOBALS['phpQAdmin'] = array();
$uselang = SetLanguage($language, 'ADMIN');
$languages = GetLanguages('ADMIN');
$imgurl = $GLOBALS["phpQImageDir"];
#-->> MySQL Setup
# 0 - Variable Check
# 1 - MySQL Connection Test
# 2 - MySQL Database Test
$ErrorCode[] = ($mysqlhost && $mysqluser && $mysqlpasswd && $mysqldb) ? true : false;
$ErrorCode[] = ($ErrorCode[0]) ? ((mysql_pconnect($mysqlhost, $mysqluser, $mysqlpasswd)) ? true : false) : false;
$ErrorCode[] = ($ErrorCode[1]) ? ((mysql_select_db($mysqldb)) ? true : false) : false;
$ErrorCode[] = ($mysqlhost && $mysqluser && $mysqlpasswd && $mysqldb && $apasswd) ? true : false;
$ErrorCode[] = is_writeable('inc/mysql.php') ? true : false;
if ($ErrorCode[1] && $ErrorCode[2]) {
$mqadmin = mysql_query("select * from phpQAdmin limit 1");
$GLOBALS["phpQAdmin"] = mysql_fetch_array($mqadmin);
}
#-->> Variables
$htmlhost = ($mysqlhost) ? ProtectHTML($mysqlhost) : "localhost";
$htmluser = ProtectHTML($mysqluser);
$htmlpasswd = ProtectHTML($mysqlpasswd);
$htmldb = ProtectHTML($mysqldb);
$htmlapasswd = ProtectHTML($apasswd);
$phpQID = rand(1000000000,9999999999);
#-->> Installation
switch ($action) {
case $phpQlang['Install']:
#-->> MySQL Creation Queries
$TableQuery[] = array("phpQAdmin", "CREATE TABLE phpQAdmin (phpQID BIGINT UNSIGNED NOT NULL, Version CHAR(10) NOT NULL, Passwd VARCHAR(20) NOT NULL, Template VARCHAR(50) NOT NULL, Language VARCHAR(50) NOT NULL, AdminLanguage VARCHAR(50) NOT NULL, SummaryLimit INT UNSIGNED NOT NULL DEFAULT 10, TextareaLimit INT UNSIGNED NOT NULL DEFAULT 5, PopupLimit INT UNSIGNED NOT NULL DEFAULT 5, AdvanceInterface ENUM('y','n') NOT NULL DEFAULT 'n', ListSurvey ENUM('y','n') NOT NULL DEFAULT 'y', TimeOut BIGINT UNSIGNED NOT NULL, CookieDomain VARCHAR(255) NOT NULL)");
$TableQuery[] = array("phpQAnswer", "CREATE TABLE phpQAnswer (UID BIGINT UNSIGNED NOT NULL, SID BIGINT UNSIGNED NOT NULL, QID BIGINT UNSIGNED NOT NULL, Answer TEXT NOT NULL, UNIQUE uniqids (SID, QID, UID), INDEX index_uid (UID))");
$TableQuery[] = array("phpQQuestion", "CREATE TABLE phpQQuestion (SID BIGINT UNSIGNED NOT NULL, QID BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, SortOrder INT UNSIGNED NOT NULL, Question TEXT NOT NULL, Type ENUM('radio','checkbox','textfield','textarea','select','selectmult','pagebreak','htmlcontent') NOT NULL DEFAULT 'radio', Mult INT UNSIGNED NOT NULL DEFAULT 1, QuestionStyle VARCHAR(255) NOT NULL, Instructions TEXT NOT NULL, Answer TEXT NOT NULL, Choose VARCHAR(11) NOT NULL, DefaultAnswer TEXT NOT NULL, LargestAID INT UNSIGNED NOT NULL, ColNumb INT UNSIGNED NOT NULL DEFAULT 1, AnswerInputStyle VARCHAR(255) NOT NULL, AnswerTextStyle VARCHAR(255) NOT NULL, AnswerStyle VARCHAR(255) NOT NULL, Attributes TEXT NOT NULL, Required ENUM('y','n') NOT NULL DEFAULT 'y', Summary ENUM('y','n') NOT NULL DEFAULT 'n')");
$TableQuery[] = array("phpQSession", "CREATE TABLE phpQSession (SessionID VARCHAR(255) NOT NULL, RecentTime BIGINT UNSIGNED NOT NULL)");
$TableQuery[] = array("phpQSurvey", "CREATE TABLE phpQSurvey (SID BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(255) NOT NULL, AddDate DATETIME NOT NULL DEFAULT '0000-00-00', SurveyUsers CHAR(3) NOT NULL DEFAULT '000', SurveyResults TINYINT NOT NULL, Width VARCHAR(255) NOT NULL, Indent INT UNSIGNED NOT NULL DEFAULT 20, QuestionNumb ENUM('y','n') NOT NULL DEFAULT 'y', QuestionStyle VARCHAR(255) NOT NULL, AnswerInputStyle VARCHAR(255) NOT NULL, AnswerTextStyle VARCHAR(255) NOT NULL, AnswerStyle VARCHAR(255) NOT NULL, ErrorStyle VARCHAR(255) NOT NULL, VerifyEmail TEXT NOT NULL, EmailFrom VARCHAR(255) NOT NULL, EmailSubject VARCHAR(255) NOT NULL, Template VARCHAR(50) NOT NULL, Language VARCHAR(50) NOT NULL, OnComplete TINYINT NOT NULL, RedirectURL TEXT NOT NULL, Completed TEXT NOT NULL, Description TEXT NOT NULL, AdminNotes TEXT NOT NULL, Active ENUM('y','n') NOT NULL DEFAULT 'n', StartDate DATETIME NOT NULL DEFAULT '0000-00-00', EndDate DATETIME NOT NULL DEFAULT '0000-00-00', AdvanceInterface ENUM('y','n') NOT NULL DEFAULT 'n', ResultsWidth VARCHAR(255) NOT NULL, ResultsBorder VARCHAR(255) NOT NULL, ResultsAnswer VARCHAR(255) NOT NULL, ResultsStats VARCHAR(255) NOT NULL, ResultsGraph VARCHAR(255) NOT NULL, SubmitImageSrc VARCHAR(255) NOT NULL, SubmitImageWidth INT UNSIGNED NOT NULL, SubmitImageHeight INT UNSIGNED NOT NULL, SubmitImageText VARCHAR(255) NOT NULL, ResultImageSrc VARCHAR(255) NOT NULL, ResultImageWidth INT UNSIGNED NOT NULL, ResultImageHeight INT UNSIGNED NOT NULL, ResultImageText VARCHAR(255) NOT NULL,NextImageSrc VARCHAR(255) NOT NULL, NextImageWidth INT UNSIGNED NOT NULL, NextImageHeight INT UNSIGNED NOT NULL, NextImageText VARCHAR(255) NOT NULL, ResponseNotice TINYINT NOT NULL, ResponseEmail TEXT NOT NULL)");
$TableQuery[] = array("phpQUser", "CREATE TABLE phpQUser (UID BIGINT UNSIGNED NOT NULL PRIMARY KEY DEFAULT 0, SID BIGINT UNSIGNED NOT NULL, IPAddr VARCHAR(100) NOT NULL, BlockDupe VARCHAR(40) NOT NULL, CheckType CHAR(3) NOT NULL DEFAULT '000', Email VARCHAR(255) NOT NULL, Confirm VARCHAR(50) NOT NULL, EmailConfirm ENUM('y','n') NOT NULL DEFAULT 'n', CompleteDate DATETIME NOT NULL DEFAULT '0000-00-00')");
$InsertQuery[] = array("phpQAdmin", "INSERT INTO phpQAdmin VALUES ($phpQID, '".$GLOBALS["PHPQVERSION"]."', 'password', 'default', '".$uselang."', '".$uselang."', 10, 5, 5, 'n', 'y', 0, '')");
$InsertQuery[] = array("phpQSurvey", "INSERT INTO phpQSurvey VALUES (1, 'What is your opinion of phpQ?', now(), '110', '0', '450', '20', 'y', 'font-weight: 700; color: #669933;', '', 'color: #115533;', '', 'color: red;', 'Greetings,\n\nBefore the results of the survey \"::SurveyName::\" are submitted, there is one more step you must complete. In order to store and validate your responses, you must visit the following URL:\n\n::ConfirmURL::\n\nAlternatively, if you are still at the confirmation page that was displayed at the end of your survey, you may enter the password shown below:\n\nYour Confirmation Password is: ::ConfirmPassword::\n\nThank you for completing our survey.', 'phpQ <you@yourdomain.com>', 'Survey Email Verification', 'default', 'english', '0', '', '<TABLE CELLPADDING=5 CELLSPACING=5 BORDER=0 WIDTH=400><TR><TD ALIGN=center>Survey Completed.</TD></TR></TABLE>', 'Example survey demonstrating several advanced features of phpQ', 'The following is an example survey that demonstrates multiple page surveys, verified email user restrictions, and cookie based user restrictions.', 'y', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 'n', '500', 'background-color: #333366; color: #FFFFFF; text-decoration: none;', 'background-color: #FFFFFF; color: #333366;', 'background-color: #DDEEFF; color: #333366;', 'background-color: #333366; height: 8px;', '', 0, 0, 'Submit', '', 0, 0, 'Show Results', '', 0, 0, 'Next', 0, '')");
# If form is filled out and mysql.php is writable...
if ($ErrorCode[0] && $ErrorCode[4]) {
$status .= PrintHead();
$status .= PrintStatus($ErrorCode[1], $phpQlang['MySQLConnection'], $phpQlang['InvalidConnection']);
$status .= PrintStatus($ErrorCode[2], $phpQlang['MySQLDatabase'], $phpQlang['InvalidDatabase']);
# If MySQL is connected to the database...
if ($ErrorCode[1] && $ErrorCode[2]) {
$QuerySuccess = true;
$InsertSuccess = true;
for ($i=0; $i<sizeof($TableQuery); $i++) {
$find = FindTable($TableQuery[$i][0], $mysqldb);
if ($find) {
$querymsg = $phpQlang['DuplicateTable'];
$addsuccess = false;
}
else {
$addsuccess = (mysql_query($TableQuery[$i][1])) ? true : false;
$querymsg = $phpQlang['CreateTableError'];
}
$status .= PrintStatus($addsuccess, sprintf($phpQlang['CreateTable'], $TableQuery[$i][0]), $querymsg);
if (!$addsuccess && !$find) { $QuerySuccess = false; }
}
for ($j=0; $j<sizeof($InsertQuery); $j++) {
$find = FindTable($InsertQuery[$j][0], $mysqldb);
if ($find) {
$mqiadmin = mysql_query("select * from ".$InsertQuery[$j][0]." limit 1");
$dontadd = ($maiadmin = mysql_fetch_array($mqiadmin)) ? true : false;
if ($dontadd) {
$addsuccess = false;
$querymsg = $phpQlang['TableData'];
}
else {
$addsuccess = (mysql_query($InsertQuery[$j][1])) ? true : false;
$querymsg = $phpQlang['InsertTableError'];
}
}
else {
$querymsg = sprintf($phpQlang['TableNotFound'], $InsertQuery[$j][0]);
$addsuccess = false;
}
$status .= PrintStatus($addsuccess, sprintf($phpQlang['InsertTable'], $InsertQuery[$j][0]), $querymsg);
if (!$addsuccess) { $InsertSuccess = false; }
}
}
else {
$QuerySuccess = false;
$InsertSuccess = false;
$querymsg = $phpQlang['NoConnection'];
$insertmsg = $phpQlang['NoConnection'];
}
$status .= PrintEnd();
$tail = false;
// Everything went well
if ($ErrorCode[1] && $ErrorCode[2] && $QuerySuccess && $InsertSuccess) {
UpdateMySQLFile();
$tail = true;
}
$contents = GetStatusPage($action, $status, $tail);
$contents = FormatPage($contents);
}
else {
if (!$ErrorCode[4]) {
$contents = GetStartPage("");
$contents = FormatPage($contents);
}
else {
$contents = GetStartPage($phpQlang['CompleteAllFields']);
$contents = FormatPage($contents);
}
}
break;
case $phpQlang['Upgrade']:
case $phpQlang['BackupDatabase']:
# Is upgrade form completed and mysql.php world writable?
if ($ErrorCode[3] && $ErrorCode[4]) {
# Is MySQL connected to the database?
if ($ErrorCode[1] && $ErrorCode[2]) {
$mqcheck = mysql_query("select * from phpQAdmin limit 1");
if ($macheck = mysql_fetch_array($mqcheck)) {
if ($macheck["Passwd"] != $apasswd) {
$breakmsg = $phpQlang['InvalidAdminPassword'];
}
if (isset($macheck["Version"]) && $macheck["Version"] > $GLOBALS["PHPQVERSION"] && $action != $phpQlang['BackupDatabase']) {
$breakmsg = sprintf($phpQlang['VersionAlreadyExists'], $macheck["Version"]);
}
}
else {
$breakmsg = $phpQlang['UnknownAdminPassword'];
}
}
else {
$breakmsg = $phpQlang['InvalidConnection'];
}
if ($breakmsg) {
$contents = GetStartPage($breakmsg);
$contents = FormatPage($contents);
break;
}
if ($action == $phpQlang['BackupDatabase']) {
$filename = 'backup_'.strftime('%Y-%m-%d').'.phpQ';
header("Content-Type: text/phpQ");
header("Content-Disposition: attachment; filename=$filename");
BackupAllData(0,0);
exit();
}
$successstatus = true;
$statusmsg = array();
if (!isset($macheck["Version"]) || $macheck["Version"] < 1.2) {
$addresult = AddColumns(array(array('phpQSurvey', 'RedirectURL', "RedirectURL text after OnComplete")));
$successstatus = $addresult[0] ? $successstatus : false;
$statusmsg[] = array($addresult[1][0][0], $addresult[1][0][1], $addresult[1][0][2]);
$mqindex = mysql_query("show keys from phpQAnswer");
$findkey = false;
while ($maindex = mysql_fetch_array($mqindex)) {
if (strtolower($maindex['Key_name']) == strtolower('uniqids')) {
$findkey = true;
break;
}
}
$keymsgleft = sprintf($phpQlang['AddColumnToTable'], 'uniqids', 'phpQAnswer');
if (!$findkey) {
$addkey = mysql_query("ALTER IGNORE TABLE phpQAnswer add unique uniqids(SID, QID, UID)");
if ($addkey) {
$statusmsg[] = array($addkey, $keymsgleft, '');
}
else {
$statusmsg[] = array($addkey, $keymsgleft, $phpQlang['AddColumnFailure']);
$successstatus = false;
}
}
else {
$statusmsg[] = array($findkey, $keymsgleft, '');
}
# Add the Version column...
$addresult = AddColumns(array(array('phpQAdmin', 'Version', "Version char(10) after phpQID")));
$successstatus = $addresult[0] ? $successstatus : false;
$statusmsg[] = array($addresult[1][0][0], $addresult[1][0][1], $addresult[1][0][2]);
}
if (!isset($macheck["Version"]) || $macheck["Version"] < 2.0) {
$modfields = array('phpQID BIGINT UNSIGNED NOT NULL',
'Version CHAR(10) NOT NULL', 'Passwd VARCHAR(20) NOT NULL',
'Template VARCHAR(50) NOT NULL',
'SummaryLimit INT UNSIGNED NOT NULL DEFAULT 10',
'TextareaLimit INT UNSIGNED NOT NULL DEFAULT 5',
'PopupLimit INT UNSIGNED NOT NULL DEFAULT 5',
"AdvanceInterface ENUM('y','n') NOT NULL DEFAULT 'n'",
"ListSurvey ENUM('y','n') NOT NULL DEFAULT 'y'",
'TimeOut BIGINT UNSIGNED NOT NULL');
$modsuccess = true;
for ($i=0; $i<count($modfields); $i++) {
$modsuccess = mysql_query("ALTER TABLE phpQAdmin MODIFY ".$modfields[$i]) ? $modsuccess : false;
}
$successstatus = $modsuccess ? $successstatus : false;
$statusmsg[] = array($modsuccess, sprintf($phpQlang['ModifyingColumns'], 'phpQAdmin'), $phpQlang['ModifyColumnFailure']);
$addfields = array(array('phpQAdmin', 'Language', "Language VARCHAR(50) NOT NULL AFTER Template"),
array('phpQAdmin', 'AdminLanguage', "AdminLanguage VARCHAR(50) NOT NULL AFTER Language"),
array('phpQAdmin', 'CookieDomain', 'CookieDomain VARCHAR(255) NOT NULL AFTER TimeOut'));
$addresult = AddColumns($addfields);
$successstatus = $addresult[0] ? $successstatus : false;
for ($i=0; $i<count($addresult[1]); $i++) {
$statusmsg[] = array($addresult[1][$i][0], $addresult[1][$i][1], $addresult[1][$i][2]);
}
# Set default values for new columns...
mysql_query("UPDATE phpQAdmin SET Language='".$uselang."', AdminLanguage='".$uselang."'");
# Update phpQSession to remove any NULL fields...
$modfields = array('SessionID VARCHAR(255) NOT NULL',
'RecentTime BIGINT UNSIGNED NOT NULL');
$modsuccess = true;
for ($i=0; $i<count($modfields); $i++) {
$modsuccess = mysql_query("ALTER TABLE phpQSession MODIFY ".$modfields[$i]) ? $modsuccess : false;
}
$successstatus = $modsuccess ? $successstatus : false;
$statusmsg[] = array($modsuccess, sprintf($phpQlang['ModifyingColumns'], 'phpQSession'), $phpQlang['ModifyColumnFailure']);
# Update phpQSurvey to remove any NULL fields...
$modfields = array('SID BIGINT UNSIGNED NOT NULL AUTO_INCREMENT',
'Name VARCHAR(255) NOT NULL',
"AddDate DATETIME NOT NULL DEFAULT '0000-00-00'",
"SurveyUsers CHAR(3) NOT NULL DEFAULT '000'",
'Width VARCHAR(255) NOT NULL',
'Indent INT UNSIGNED NOT NULL DEFAULT 20',
"QuestionNumb ENUM('y','n') NOT NULL DEFAULT 'y'",
'QuestionStyle VARCHAR(255) NOT NULL',
'AnswerTextStyle VARCHAR(255) NOT NULL',
'AnswerStyle VARCHAR(255) NOT NULL',
'ErrorStyle VARCHAR(255) NOT NULL',
'VerifyEmail TEXT NOT NULL',
'EmailFrom VARCHAR(255) NOT NULL',
'EmailSubject VARCHAR(255) NOT NULL',
'Template VARCHAR(50) NOT NULL',
'RedirectURL TEXT NOT NULL',
'Completed TEXT NOT NULL',
'Description TEXT NOT NULL',
'AdminNotes TEXT NOT NULL',
"Active ENUM('y','n') NOT NULL DEFAULT 'n'",
"StartDate DATETIME NOT NULL DEFAULT '0000-00-00'",
"EndDate DATETIME NOT NULL DEFAULT '0000-00-00'",
"AdvanceInterface ENUM('y','n') NOT NULL DEFAULT 'n'");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -