我正在尝试在PHP中创建一个简单的注册脚本,将表单的输入添加到数据库中。加载时脚本会抛出错误500,Godaddy的客户支持告诉我这是我的脚本。作为参考,我使用Parallel的Plesk进行托管,使用MyLittleAdmin(MSSQL)作为DB(由GoDaddy提供)。
我写的脚本在另一台服务器上运行正常,但在GoDaddy提供的脚本上运行不正常。他们说这不是他们服务器的问题;它介于两者之间吗?
重要提示:评论从$link = db_contact();
到mysql_close($link);
的所有内容都会使脚本正常工作。
脚本: “db.php”(连接到数据库):
<?php
$db_server = "/";
$db_user = "Milan";
$db_pass = "/";
$db_name = "/";
function db_contact() {
global $db_server, $db_user, $db_pass, $db_name;
// maak contact met de sql server
$db = mysql_connect($db_server,$db_user,$db_pass) or die("Fout: Er is geen verbinding met de MySQL-server tot stand gebracht!");
// selecteer de juiste database
mysql_select_db($db_name,$db) or die("Fout: Het openen van de database is mislukt!");
// geef een handle naar de database terug
return $db;
}
?>
registreren.php(表格和脚本)
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
include "db.php";
?>
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<form action="registreren.php" method="post">
<table>
<tr>
<td>Voornaam *</td> <td><input type="text" name="voornaam" /></td>
</tr>
<tr>
<td>Tussenvoegsel</td> <td><input type="text" name="tussenvoegsel" /></td>
<tr/>
<tr>
<td>Achternaam *</td> <td><input type="text" name="achternaam" /></td>
</tr>
<tr>
<td>Email-adres *</td> <td><input type="text" name="email" /></td>
</tr>
<tr>
<td>Telefoonnummer</td> <td><input type="text" name="telefoonnummer" /></td>
</tr>
<tr>
<td>Woonplaats *</td> <td><input type="text" name="woonplaats" /></td>
</tr>
<tr>
<td>Geboortedatum *</td> <td><input type=date name="geboortedatum" step=1 min=1990-01-01 max=2010-31-12></td>
</tr>
<tr>
<td>Geslacht *</td> <td><input type="radio" name="geslacht" value="man">Man <input type="radio" name="geslacht" value="vrouw">Vrouw</td>
</tr>
<tr>
<td>School
<td>
<select name="school">
<option value="Jan van Brabant College Molenstraat">Jan van Brabant College Molenstraat</option>
<option value="Jan van Brabant College">Jan van Brabant College Deltaweg</option>
<option value="Knippenberg College">Knippenberg College</option>
<option value="Carolus Borromeus College">Carolus Borromeus College</option>
</select>
</td>
</tr>
<tr>
<td>Niveau</td>
<td>
<select name="niveau">
<option value="VMBO-T">VMBO-T</option>
<option value="VMBOT/HAVO">VMBO-T/HAVO</option>
<option value="HAVO">HAVO</option>
<option value="HAVO/VWO">HAVO/VWO</option>
<option value="VWO">VWO</option>
</select>
</td>
</tr>
<tr>
<td>Leerjaar</td>
<td>
<select name="leerjaar">
<option value="1">Leerjaar 1</option>
<option value="2">Leerjaar 2</option>
<option value="3">Leerjaar 3</option>
<option value="4">Leerjaar 4</option>
<option value="5">Leerjaar 5</option>
<option value="6">Leerjaar 6</option>
</select>
</td>
</tr>
<tr>
<td>Velden met een * zijn verplicht.</td>
</tr>
</table>
<input type="submit" name="submit" value="Registreren" />
</form>
</body>
</html>
<?php
if(isset($_POST["submit"])) {
$foutMelding = " "; //Deze variabele wordt gevuld met error messages en dan naar de user gestuurd.
//Naamgegevens in variabelen veranderd
$voornaam = $_POST["voornaam"];
$tussenvoegsel = $_POST["tussenvoegsel"];
$achternaam = $_POST["achternaam"];
//Persoonlijke gegevens in variabelen veranderd
$email = $_POST["email"];
$telefoonnummer = $_POST["telefoonnummer"];
$woonplaats = $_POST["woonplaats"];
$geboorteDatum = $_POST["geboortedatum"];
$geslacht = $_POST["geslacht"];
//Schoolgegevens in variabelen veranderd
$school = $_POST["school"];
$niveau = $_POST["niveau"];
$leerjaar = $_POST["leerjaar"];
//Controleert of verplichte velden ingevuld zijn.
if(empty($voornaam) OR empty($achternaam) OR empty($email) OR empty($woonplaats)OR empty($geboorteDatum) OR empty($geslacht)) {
$foutMelding = "Vergeet niet alle verplichte velden in te vullen.";
}
else { //Als alle verplichte velden ingevuld zijn, wordt gecontroleerd of alle invoeren geldig zijn. Fouten worden opgeslagen in $foutMelding.
//Naamgegevens
$voornaamPattern = "[a-zA-Z]{1,20}";
$tussenvoegselPattern = "[a-zA-Z ]{0,6}";
$achternaamPattern = "[a-zA-Z ]{1,30}";
if(!preg_match("/$voornaamPattern/", $voornaam)) {
$foutMelding .= "Een voornaam bestaat alleen uit letters.<br>";
}
if(!preg_match("/$tussenvoegselPattern/", $tussenvoegsel)) {
$foutMelding .= "Zorg dat je een geldig tussenvoegsel invoert.<br>";
}
if(!preg_match("/$achternaamPattern/", $achternaam)) {
$foutMelding .= "Een achternaam bestaat alleen uit letters.<br>";
}
//Overige gegevens
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { //Er wordt gecontroleerd of het opgegeven emailadres de correcte format heeft.
$foutMelding .= "Je opgegeven email-adres is geen geldig adres.<br>";
}
//Schoolgegevens
//!Niet vergeten: onmogelijke combinaties VMBO-T/HAVO en HAVO/VWO ingeven!
if(($niveau == "VMBO-T" && $leerjaar > 4) OR ($niveau == "HAVO" && $leerjaar > 5)) {//Hier worden onmogelijke niveau-klascombinaties uitgesloten
$foutMelding .= "Deze klas bestaat niet voor dit niveau!";
}
}
if($foutMelding == " ") {
//Begin email-verificatieproces.
//We maken een 'hash' voor veiligheid en een random wachtwoord dat de gebruiker voor de eerste keer gebruikt.
$hash = md5(rand(0,1000)); //32-karakters code
$wachtwoord = rand(1000,5000);
$link = db_contact();
$query = "INSERT INTO gebruiker (email, wachtwoord, voornaam, tussenvoegsel, achternaam, school, niveau, klas, telefoonnummer, woonplaats, geboortedatum, geslacht, hash, actief) VALUES ($email, (md5($wachtwoord)), $voornaam, $tussenvoegsel, $achternaam, $school, $niveau, $leerjaar, $telefoonnummer, $woonplaats, $geboorteDatum, $geslacht, $hash, 0)";
$result = mysql_query($query,$link) or die ("Kan de query niet uitvoeren");
mysql_close($link);
//We sturen een email naar de gebruiker met de mail() functie.
$to = $email; //Ontvanger van de email
$subject = 'Dusjezoektbijles.nl || Verificatie'; // Onderwerp van de email.
$message = '
Bedankt voor het aanmelden!
Je account is gecreëerd en je kunt inloggen met de volgende gegevens (nadat je je account geactiveerd hebt met de link hier beneden):
---------------------------------------------------------
Gebruikersnaam: '.$email.'
Wachtwoord: '.$wachtwoord.'
---------------------------------------------------------
Klik op de volgende link om je account te activeren:
http://www.dusjezoektbijles.nl/verifieren.php?email='.$email.'&hash='.$hash.'
'; //Het bericht in de mail
$headers = 'From:noreply@dusjezoektbijles.nl' . "\r\n"; // Set from headers
mail($to, $subject, $message, $headers); // Verstuur de email
header('Location: Geregistreerd.php');
}
else {
echo"De volgende fouten werden gevonden bij het aanmaken van je profiel:<br><br><br>$foutMelding";
}
}
?>
任何人都可以帮助我吗?
答案 0 :(得分:1)
用这个替换几行,甚至不能发布你的sql:
$query = "INSERT INTO 'gebruiker' ('email', 'wachtwoord', 'voornaam', 'tussenvoegsel', 'achternaam', 'school', 'niveau', 'klas', 'telefoonnummer', 'woonplaats', 'geboortedatum', 'geslacht', 'hash', 'actief') VALUES ($email, (md5($wachtwoord)), $voornaam, $tussenvoegsel, $achternaam, $school, $niveau, $leerjaar, $telefoonnummer, $woonplaats, $geboorteDatum, $geslacht, $hash, 0)";
mysql_query($query) or die("error in $query == ---->".mysql_error());