127 lines
5.0 KiB
PHP
127 lines
5.0 KiB
PHP
<?php
|
|
require_once ("admin-header.php");
|
|
if (!(isset($_SESSION[$OJ_NAME . '_' . 'administrator']) || isset($_SESSION[$OJ_NAME . '_problem_importer']))) {
|
|
echo "<a href='../loginpage.php'>Please Login First!</a>";
|
|
exit(1);
|
|
}
|
|
if (isset($OJ_LANG)) {
|
|
require_once ("../lang/$OJ_LANG.php");
|
|
}
|
|
require_once ("../include/const.inc.php");
|
|
require_once ("../include/my_func.inc.php");
|
|
?>
|
|
|
|
<?php
|
|
function get_extension($file) {
|
|
$info = pathinfo($file);
|
|
return $info['extension'];
|
|
}
|
|
function import_user($filename) {
|
|
$check=false;
|
|
if (($h = fopen("{$filename}", "r")) !== FALSE) {
|
|
// 文件中的每一行数据都被转换为我们调用的单个数组$data
|
|
// 数组的每个元素以逗号分隔
|
|
while (($data = fgetcsv($h, 1000, ",")) !== FALSE) {
|
|
// 每个单独的数组都被存入到嵌套的数组中
|
|
if ($data[0] == "学号") {
|
|
$check=true;
|
|
echo "导入名单:<hr>\n";
|
|
$gb2312=false;
|
|
continue;
|
|
}else if (iconv("gb2312","utf-8",$data[0])=="学号") {
|
|
$check=true;
|
|
$gb2312=true;
|
|
continue;
|
|
}
|
|
if($check){
|
|
echo $data[0] . "<br>\n";
|
|
$user_id = mb_trim($data[0]);
|
|
$nick = $data[1];
|
|
$password = pwGen(trim($data[2]));
|
|
$school = "";
|
|
$email = "";
|
|
$group_name="";
|
|
if (isset($data[3])) $school = $data[3];
|
|
if (isset($data[4])) $email = $data[4];
|
|
if (isset($data[5])) $group_name = $data[5];
|
|
if($gb2312) {
|
|
$nick=iconv("gb2312","utf-8",$nick);
|
|
$school=iconv("gb2312","utf-8",$school);
|
|
$group_name=iconv("gb2312","utf-8",$group_name);
|
|
}
|
|
if (mb_strlen($nick, 'utf-8') > 20) {
|
|
$new_len = mb_strlen($nick, 'utf-8');
|
|
if ($new_len > $max_length) {
|
|
$max_length = $new_len;
|
|
$longer = "ALTER TABLE `users` MODIFY COLUMN `nick` varchar($max_length) NULL DEFAULT '' ";
|
|
pdo_query($longer);
|
|
}
|
|
}
|
|
|
|
$ip = "127.0.0.1";
|
|
$sql = "INSERT INTO `users`(" . "`user_id`,`email`,`ip`,`accesstime`,`password`,`reg_time`,`nick`,`school`,`group_name`)" . "VALUES(?,?,?,NOW(),?,NOW(),?,?,?)on DUPLICATE KEY UPDATE `email`=?,`ip`=?,`accesstime`=NOW(),`password`=?,`reg_time`=now(),nick=?,`school`=?,`group_name`=?";
|
|
pdo_query($sql, $user_id, $email, $ip, $password, $nick, $school,$group_name, $email, $ip, $password, $nick, $school,$group_name);
|
|
|
|
}else{
|
|
echo "<h1>请用下载的模板填写,保存为UTF-8编码。</h1>";
|
|
break;
|
|
}
|
|
}
|
|
// 关闭文件
|
|
fclose($h);
|
|
}
|
|
}
|
|
|
|
if (isset($_FILES["fps"])) {
|
|
if ($_FILES["fps"]["error"] > 0) {
|
|
echo " - Error: " . $_FILES["fps"]["error"] . "File size is too big, change in PHP.ini<br />";
|
|
} else {
|
|
$tempfile = $_FILES["fps"]["tmp_name"];
|
|
if (get_extension($_FILES["fps"]["name"]) == "zip") {
|
|
echo " - zip file, only fps/xml files in root dir are supported";
|
|
$resource = zip_open($tempfile);
|
|
$i = 1;
|
|
$tempfile = tempnam("/tmp", "fps");
|
|
while ($dir_resource = zip_read($resource)) {
|
|
if (zip_entry_open($resource, $dir_resource)) {
|
|
$file_name = $path . zip_entry_name($dir_resource);
|
|
$file_path = substr($file_name, 0, strrpos($file_name, "/"));
|
|
if (!is_dir($file_name)) {
|
|
$file_size = zip_entry_filesize($dir_resource);
|
|
$file_content = zip_entry_read($dir_resource, $file_size);
|
|
file_put_contents($tempfile, $file_content);
|
|
import_user($tempfile);
|
|
}
|
|
zip_entry_close($dir_resource);
|
|
}
|
|
}
|
|
zip_close($resource);
|
|
unlink($_FILES["fps"]["tmp_name"]);
|
|
} else {
|
|
import_user($tempfile);
|
|
unlink($_FILES["fps"]["tmp_name"]);
|
|
}
|
|
}
|
|
} else {
|
|
?>
|
|
|
|
<br>
|
|
<br>
|
|
<h1>导入用户csv文件</h1>
|
|
<form class='form-inline' action='user_import.php' method=post enctype="multipart/form-data">
|
|
<div class='form-group'>
|
|
<input class='form-control' type=file name='fps' >
|
|
</div>
|
|
<br><br>
|
|
<br><br><br>
|
|
<center>
|
|
<div class='form-group'>
|
|
<button class='btn btn-default btn-sm' type=submit>Upload to HUSTOJ</button>
|
|
</div>
|
|
</center>
|
|
<?php require_once ("../include/set_post_key.php"); ?>
|
|
</form>
|
|
<a href="users.csv">下载模板</a>
|
|
<?php
|
|
} ?>
|