Avatar billede trajkovski Nybegynder
02. juli 2004 - 00:38 Der er 2 kommentarer og
1 løsning

Uforklarlig fejl i php

Hej

Jeg 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>&nbsp;&nbsp; <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>&nbsp;&nbsp; <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 den fejl, der står nedenunder. Som koden ser ud nu er det: 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
Avatar billede sostack Nybegynder
02. juli 2004 - 08:12 #1
Du skal se på hvad din funktion returnerer:
if(is_email_valid($personens_email) == "") virker for mig, da funktionen returnerer 1 ved TRUE og intet ved FALSE.

//sostack
Avatar billede trajkovski Nybegynder
02. juli 2004 - 17:02 #2
Men hvis jeg sætter den funktion til en kommentar så hopper den videre og skriver: "Du har valgt et user level der er højere end dit eget!<br \> Dette tillades ikke!";
Avatar billede trajkovski Nybegynder
02. juli 2004 - 17:05 #3
Lukker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester