connect_error) {
die("数据库连接失败: " . $conn->connect_error);
}
// 创建表(如果不存在)
function createActivityTable($conn, $activity_id) {
$table_name = "activity_" . $activity_id;
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
school_name VARCHAR(255) NOT NULL,
teacher_name VARCHAR(255) NOT NULL,
teacher_email VARCHAR(255) NOT NULL,
student1_name VARCHAR(255) NOT NULL,
student1_email VARCHAR(255) NOT NULL,
student2_name VARCHAR(255) NOT NULL,
student2_email VARCHAR(255) NOT NULL,
student3_name VARCHAR(255) NOT NULL,
student3_email VARCHAR(255) NOT NULL,
student4_name VARCHAR(255) NOT NULL,
student4_email VARCHAR(255) NOT NULL,
student5_name VARCHAR(255) NOT NULL,
student5_email VARCHAR(255) NOT NULL,
student6_name VARCHAR(255),
student6_email VARCHAR(255),
student7_name VARCHAR(255),
student7_email VARCHAR(255),
student8_name VARCHAR(255),
student8_email VARCHAR(255),
student9_name VARCHAR(255),
student9_email VARCHAR(255),
student10_name VARCHAR(255),
student10_email VARCHAR(255),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
if (!$conn->query($sql)) {
die("创建表失败: " . $conn->error);
}
}
// 处理表单提交
if ($_SERVER["REQUEST_METHOD"] == "POST") {
session_start();
// 验证验证码
if (empty($_SESSION['captcha']) || strtolower($_POST['captcha']) !== strtolower($_SESSION['captcha'])) {
$error = "验证码错误";
} else {
// 获取活动ID
$activity_id = $_POST['activity_id'] ?? 'default';
// 创建表(如果不存在)
createActivityTable($conn, $activity_id);
$table_name = "activity_" . $activity_id;
// 准备数据
$school_name = $conn->real_escape_string($_POST['school_name']);
$teacher_name = $conn->real_escape_string($_POST['teacher_name']);
$teacher_email = $conn->real_escape_string($_POST['teacher_email']);
// 学生数据
$students = [];
for ($i = 1; $i <= 10; $i++) {
$name = $conn->real_escape_string($_POST["student{$i}_name"] ?? '');
$email = $conn->real_escape_string($_POST["student{$i}_email"] ?? '');
$students[] = "('$name', '$email')";
}
// 构建SQL
$sql = "INSERT INTO $table_name (
school_name, teacher_name, teacher_email,
student1_name, student1_email,
student2_name, student2_email,
student3_name, student3_email,
student4_name, student4_email,
student5_name, student5_email,
student6_name, student6_email,
student7_name, student7_email,
student8_name, student8_email,
student9_name, student9_email,
student10_name, student10_email
) VALUES (
'$school_name', '$teacher_name', '$teacher_email',
{$students[0][0]}, {$students[0][1]},
{$students[1][0]}, {$students[1][1]},
{$students[2][0]}, {$students[2][1]},
{$students[3][0]}, {$students[3][1]},
{$students[4][0]}, {$students[4][1]},
{$students[5][0]}, {$students[5][1]},
{$students[6][0]}, {$students[6][1]},
{$students[7][0]}, {$students[7][1]},
{$students[8][0]}, {$students[8][1]},
{$students[9][0]}, {$students[9][1]}
)";
if ($conn->query($sql) === TRUE) {
$success = "报名成功!";
} else {
$error = "错误: " . $sql . "
" . $conn->error;
}
}
}
// 生成验证码
if (isset($_GET['captcha'])) {
session_start();
$chars = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789';
$captcha = '';
for ($i = 0; $i < 4; $i++) {
$captcha .= $chars[rand(0, strlen($chars) - 1)];
}
$_SESSION['captcha'] = $captcha;
// 创建图像
$width = 100;
$height = 30;
$image = imagecreatetruecolor($width, $height);
$bg_color = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 0, 0, 0);
$noise_color = imagecolorallocate($image, 150, 180, 200);
imagefilledrectangle($image, 0, 0, $width, $height, $bg_color);
// 添加噪点
for ($i = 0; $i < 100; $i++) {
imagesetpixel($image, rand(0, $width), rand(0, $height), $noise_color);
}
// 添加文本
$font = 5;
$x = 10;
for ($i = 0; $i < strlen($captcha); $i++) {
$y = rand(5, 10);
imagestring($image, $font, $x, $y, $captcha[$i], $text_color);
$x += 20;
}
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
exit;
}
?>