Hej
Jeg er igang med at lægge sidste hånd på min hjemmeside og jeg skulle jo gerne være i stand til at oprette nye kunder i systemet, men det virker kun 50% lige nu.
Jeg har, for at finde ud af hvor den stopper, indsat et echo efter hver indsættelse i databasen, hvor jeg kort kan se hvad den for gemt og hvad den ikke får gemt.
Her får I lige den kode, hvor det øverste if-statement er den sidste der lykkes og resten bliver slet ikke udført:
- if($stmt=$mysqli->prepare('SELECT `id` FROM `users` WHERE `username` = ?')) {
- //Bind parametre
- $stmt->bind_param('s', $username);
- //udfør
- $stmt->execute();
- //Gem
- $stmt->bind_result($bruger_id);
- //Luk
- $stmt->close();
- echo '<br />bruger hentet<br />';
- }
- if($stmt=$mysqli->prepare('INSERT INTO `user_info`(`kontrol`,`user_id`, `om`, `kontakt`, `adresse`, `postby`, `tlf`, `epost`)VALUES(?,?,?,?,?,?,?,?)')) {
- //Bind parametre
- $stmt->bind_param('iissssss', $kontrol, $bruger_id, $bruger_om, $name, $bruger_adresse, $bruger_postby, $bruger_tlf, $username);
- //Parameterværdier
- $kontrol = 0;
- $bruger_om = "Example text";
- $bruger_adresse = "Din adresse";
- $bruger_postby = "0000 by";
- $bruger_tlf = "(+45)00000000";
- //Udfør
- $stmt->excute();
- $stmt->close();
- $status_info = 0;
- echo 'brugerinfo indsat<br />';
- }
Jeg synes ikke at kunne se fejlen, men det kan være at der er andre der kan se den.
Jeg har for en sikkerheds skyld inkluderet hele mit script nedenfor.
Hele koden:
- include 'connect.php';
- session_start();
- function MakeRandPass($upper = 3, $lower = 3, $numeric = 3, $other = 2) {
- //we need these vars to create a password string
- $passOrder = Array();
- $passWord = '';
- //generate the contents of the password
- for ($i = 0; $i < $upper; $i++) {
- $passOrder[] = chr(rand(65, 90));
- }
- for ($i = 0; $i < $lower; $i++) {
- $passOrder[] = chr(rand(97, 122));
- }
- for ($i = 0; $i < $numeric; $i++) {
- $passOrder[] = chr(rand(48, 57));
- }
- for ($i = 0; $i < $other; $i++) {
- $passOrder[] = chr(rand(33, 47));
- }
- //randomize the order of characters
- shuffle($passOrder);
- //concatenate into a string
- foreach ($passOrder as $char) {
- $passWord .= $char;
- }
- //we're done
- return $passWord;
- }
- if(isset($_POST['opret'])) {
- if($stmt=$mysqli->prepare('SELECT `username` FROM `users` WHERE `username`=?')) {
- //Bind parametre
- $stmt->bind_param('s', $check_user);
- $check_user = $_POST['username'];
- //Udfør
- $stmt->execute();
- $stmt->bind_result($usercheck);
- $stmt->close();
- }
- if($usercheck != "") {
- echo 'Ups!<br />Dit brugernavn er allerede i brug. Udfyld formularen igen og forsøg med et
- andet brugernavn. Du kan udfylde formularen ved at trykke på <a href="#login" class="various">Kundelogin</a>.';
- }
- else {
- echo 'Brugernavnet bruges ikke<br />';
- $pwd_gen = MakeRandPass();
- if($stmt=$mysqli->prepare('INSERT INTO `users`(username, password, navn , virksomhed, usergroup)VALUES(?,?,?,?,?)')) {
- //Bind parametre
- $stmt->bind_param('sssss', $username,$adgangskode,$name,$virksomhed,$gruppe);
- //Parameterværdier
- $username = $_POST['username'];
- $adgangskode = md5($pwd_gen);
- $name = $_POST['navn'];
- $virksomhed = $_POST['virksomhed'];
- $gruppe = "user";
- //Udfør
- $stmt->execute();
- $stmt->close();
- $status = 0;
- echo 'brugerkonto oprettet<br />';
- echo 'error 00<br />password is: ';
- echo $pwd_gen;
- }
- else {
- $status = 1;
- /* Der er opstået en fejl */
- echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
- }
- if($stmt=$mysqli->prepare('SELECT `id` FROM `users` WHERE `username` = ?')) {
- //Bind parametre
- $stmt->bind_param('s', $username);
- //udfør
- $stmt->execute();
- //Gem
- $stmt->bind_result($bruger_id);
- //Luk
- $stmt->close();
- echo '<br />bruger hentet<br />';
- }
- if($stmt=$mysqli->prepare('INSERT INTO `user_info`(`kontrol`,`user_id`, `om`, `kontakt`, `adresse`, `postby`, `tlf`, `epost`)VALUES(?,?,?,?,?,?,?,?)')) {
- //Bind parametre
- $stmt->bind_param('iissssss', $kontrol, $bruger_id, $bruger_om, $name, $bruger_adresse, $bruger_postby, $bruger_tlf, $username);
- //Parameterværdier
- $kontrol = 0;
- $bruger_om = "Example text";
- $bruger_adresse = "Din adresse";
- $bruger_postby = "0000 by";
- $bruger_tlf = "(+45)00000000";
- //Udfør
- $stmt->excute();
- $stmt->close();
- $status_info = 0;
- echo 'brugerinfo indsat<br />';
- }
- else {
- $status_info = 1;
- /* Der er opstået en fejl */
- echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
- }
- if($status = 0 && $status_info = 0) {
- $_SESSION['done'] = "Brugerkontoen og dertilhørende fyldtekst er nu indsat og klar til at blive brugt.<br />Giv venligst kunden nedenstående password:<br />".$adgangskode;
- //header ('Location: ../index.php');
- }
- elseif($status = 0 && $status_info = 1) {
- $_SESSION['fail'] = "Brugerkontoen er blevet oprettet og har fået følgende kodeord".$adgangskode."<br />Dog blev der ikke gemt oplysninger omkring brugeren i systemet.<br />FEJL: ".$mysqli->error;
- //header ('Location: index.php');
- }
-
- }
- }
Som det står lige nu, så får jeg følgende på skærmen når jeg forsøger at oprette en ny bruger:
Brugernavnet bruges ikke
brugerkonto oprettet
error 00
password is: 34Q)5*RanFq
bruger hentet