Uforklarlig fejl i php
HejJeg er stødt på endnu et stort mysterie!
Jeg har modificeret en side i mit brugersystem, hvor man opretter brugere.
Hele koden er som følger:
"
<?
session_start();
//header("Cache-control: private"); //IE 6 Fix
if(!$_SESSION['brugernavn']){
$msg = "Log ind nedenfor";
header("Location: logind.php?msg=".$msg);
exit();
}
if($_SESSION['first_login'] == 1){
header("Location: ret_data.php");
exit();
}
if($_SESSION['user_level'] == 4){
echo "Du har været for dum, så du må ikke en skid! Så kan du lære det!!!";
exit();
}
function is_email_valid($email) {
if(eregi("^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,3}$", $email)) return TRUE;
else return FALSE;
}
require("../billeder/mysql/mysql-funktioner.php");
$lav_nu = $_REQUEST['lav_nu'];
$personens_fornavn = $_POST['personens_fornavn'];
$personens_mellemnavn = $_POST['personens_mellemnavn'];
$personens_efternavn = $_POST['personens_efternavn'];
$personens_email = $_POST['personens_email'];
$personens_tlfnr = $_POST['personens_tlfnr'];
$personens_user_level = $_POST['personens_user_level'];
$personens_fornavn = stripslashes($personens_fornavn);
$personens_mellemnavn = stripslashes($personens_mellemnavn);
$personens_efternavn = stripslashes($personens_efternavn);
$personens_email = stripslashes($personens_email);
$personens_tlfnr = stripslashes($personens_tlfnr);
$personens_tlfnr = str_replace(' ', '', $personens_tlfnr);
$denne_bruger = $_SESSION['brugernavn'];
$denne_brugers_user_level = $_SESSION['user_level'];
$denne_brugers_id = $_SESSION['userid'];
if(!$lav_nu == true){
echo "Er oplysningerne korrekte?";
echo "<p>Fornavn:<br \>".$personens_fornavn."<p>Mellemnavn:<br \>".$personens_mellemnavn."<p>Efternavn:<br \>".$personens_efternavn."<p>Email:<br \>".$personens_email."<p>Mobiltelefonnummer:<br \>".$personens_tlfnr."<p>User level:<br \>".$personens_user_level."<br \><br \>";
echo "<a href=\"opret_bruger_check.php?lav_nu=true\">Ja</a> <a href=\"java script:history.back()\">Nej</a>";
exit();
}
if(is_email_valid($personens_email) == false){
echo "Den angivne emailadresse er ugyldig!<br \>Prøv igen.";
include("opret_bruger.php");
exit();
}
if($personens_user_level < $denne_brugers_user_level){
echo "Du har valgt et user level der er højere end dit eget!<br \> Dette tillades ikke!";
include("opret_bruger.php");
exit();
}
if(!$personens_fornavn || !$personens_efternavn || !$personens_email || !$personens_tlfnr){
echo "Du mangler at udfylde alle felterne markeret med *!";
include("opret_bruger.php");
exit();
}
function makeRandomPassword() {
$salt = "abchefghjkmnpqrstuvwxyz0123456789";
srand((double)microtime()*1000000);
$i = 0;
while ($i <= 7) {
$num = rand() % 33;
$tmp = substr($salt, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
$personens_password = makeRandomPassword();
$personens_brugernavn = makeRandomPassword();
$krypteret_password = md5($personens_password);
$admin_mail = "";
$admin_emne = "Der er en mulig sikkerhedsrisiko i genereringen af en ny bruger og password!!!";
$admin_besked = "Da ".$_SESSION['brugernavn']." oprettede ".$personens_brugernavn." blev det generede brugernavn og det genererede password ens!
Information om nyoprettet bruger:
";
if($personens_password == $personens_brugernavn){
mail($admin_mail, $admin_emne, $admin_besked,
"From: \n
X-Mailer: PHP/" . phpversion());
}
aabn_forbindelse_og_vaelgdb();
$findes = mysql_query("SELECT * FROM brugere WHERE email='$personens_email'");
$oprettet_af = mysql_result(mysql_query("SELECT userid FROM brugere WHERE brugernavn='$denne_bruger'"),0);
if(mysql_num_rows($findes) > 0){
echo "Der er allerede oprettet en bruger med emailadressen ".$personens_email;
include("opret_bruger.php");
exit();
}
$denne_brugers_efternavn = mysql_result(mysql_query("SELECT efternavn FROM brugere WHERE userid='$denne_brugers_id'"),0);
$denne_brugers_klasse = mysql_result(mysql_query("SELECT klasse FROM brugere WHERE userid='$denne_brugers_id'"),0);
$sql = mysql_query("INSERT INTO brugere (brugernavn, fornavn, mellemnavn, efternavn, password, email, tlfnr, user_level, signup_date, oprettet_af) VALUES('$personens_brugernavn', '$personens_fornavn', '$personens_mellemnavn', '$personens_efternavn', '$krypteret_password', '$personens_email', '$personens_tlfnr', '$personens_user_level', now(), '$oprettet_af')");
$personens_id = mysql_insert_id();
luk_forbindelse();
if(!$personens_id){
echo "Personens id kunne ikke hentes fra databasen";
include("opret_bruger.php");
exit();
}
$emne = "Du er blevet oprettet i brugersystemet";
$besked = "Hej $personens_fornavn
Du er blevet oprettet i brugersystemet af ".$_SESSION['fornavn']." ".$denne_brugers_efternavn." fra ".$denne_brugers_klasse.".
Dit brugernavn er: $personens_brugernavn
Dit password er: $personens_password
Før du kan logge ind skal du aktivere dit medlemskab. Dette kan gøres her: http://sag.niconet.dk/system/aktiver.php?id=$personens_id&personens_krypterede_password=$krypteret_password
Hvis du har modtaget denne mail ved en fejl, skal du blot lade være med at aktivere dit medlemskab, hvorefter du vil blive slettet fra systemet efter en måned.
Med venlig hilsen
Nicolai
P.S. Dette er en automatisk email så lad venligst være med at besvare den!";
//$lav_nu == true
if($sql) {
mail($personens_email, $emne, $besked,
"From: \n
X-Mailer: PHP/" . phpversion());
echo "Der er blevet sendt et brugernavn og password til ".$personens_email;
exit();
} else {
echo "Der opstod en fejl - prøv igen! Hvis fejlen fortsætter kontakt da en admin.";
include("opret_bruger.php");
exit();
}
//mysql_insert_id(); -- Get the ID generated from the previous INSERT operation
?>
"
Den tilføjede blok kode er:
if(!$lav_nu == true){
echo "Er oplysningerne korrekte?";
echo "<p>Fornavn:<br \>".$personens_fornavn."<p>Mellemnavn:<br \>".$personens_mellemnavn."<p>Efternavn:<br \>".$personens_efternavn."<p>Email:<br \>".$personens_email."<p>Mobiltelefonnummer:<br \>".$personens_tlfnr."<p>User level:<br \>".$personens_user_level."<br \><br \>";
echo "<a href=\"opret_bruger_check.php?lav_nu=true\">Ja</a> <a href=\"java script:history.back()\">Nej</a>";
exit();
}
Den forårsager den fejl at når brugeren har klikket på ja, så går den videre til det fejltjek, der står nedenunder denne blok. Den udskriver dette fejltjek lige meget om det passer eller ikke gør!
Som koden ser ud nu er det næste fejltjek:
if(is_email_valid($personens_email) == false){
echo "Den angivne emailadresse er ugyldig!<br \>Prøv igen.";
include("opret_bruger.php");
exit();
}
Hvis jeg kommenterer denne validering ud, så tager den bare den næste, som her er:
if($personens_user_level < $denne_brugers_user_level){
echo "Du har valgt et user level der er højere end dit eget!<br \> Dette tillades ikke!";
include("opret_bruger.php");
exit();
}
Det går virkelig over min forstand, så jeg håber, der sidder mindst et klogt hoved derude! :)
Med venlig hilsen
Nicolai
