Avatar billede lefsa62 Seniormester
28. februar 2019 - 09:35 Der er 19 kommentarer og
2 løsninger

Login

Jeg har et udfordring med denne. Da denne side var færdig så skulle den indputte brugernavn og password i dB men den fejler at den ikke kan finde signup.php. Der hvor den virker er til hvor den skal tjekke user navn og mail derefter kan jeg ikke se fejlen. Er der nogle kan se fejle

<?php
if(isset($_POST['signup-submit'])){

require 'dbh.inc.php';

$username = $_POST['uid'];
$email = $_POST['mail'];
$password = $_POST['pwd'];
$passwordRepeat = $_POST['pwd-repeat'];

if(empty($username) || empty($email) || empty($password) || empty($passwordRepeat)){
    header("Location: ../signup.php?error=emtyfields&uid=".$username. "&mail=".$email);
    exit();
    }
    else if(!filter_var($email, FILTER_VALIDATE_EMAIL) && !preg_match("/^[a-zA-Z0-9]*$/", $username)){
        header("Location: ../signup.php?error=invalidmailuid");
        exit();
    }
else if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    header("Location: ../signup.php?error=invalidmail&uid=".$username);
        exit();
    }
else if (!preg_match("/^[a-zA-Z0-9]*$/", $username)) {
        header("Location: ../signup.php?error=invaliduid&mail=".$email);
        exit();
    }
else if(password !== $passwordRepeat){
        header("Location: ../signup.php?error=passwordcheckuid=".$username. "&mail=".$email);
        exit(); 
    }
else {

    $sql = "SELECT uidUsers FROM users WHERE uidUsers=?";
    $stmt = mysqli_stmt_init($conn);
    if (!mysql_stmt_prepare($stmt, $sql)){
        header("Location: ../signup.php?error=sqlerror");
        exit();

    }
else {
    mysqli_stmt_bind_param($stmt, "s", $username);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_store_result($stmt);
    $resultCheck = mysqli_stmt_num_rows($stmt);
    if ($resultCheck > 0){
        header("Location: ../signup.php?error=usertaken&mail=" .$email);
        exit();
    }
    else {
        $sql = "INSERT INTO users (uidUsers, emailUsers, pwdUsers) VALUES (?, ?, ?)";
        $stmt = mysqli_stmt_init($conn);
        if (!mysql_stmt_prepare($stmt, $sql)){
            header("Location: ../signup.php?error=sqlerror");
            exit();
        }
        else{
        $hashedPwd = password_hash($password, PASSWORD_DEFAULT);
        mysqli_stmt_bind_param($stmt, "sss", $username, $email, $hashedPwd);
        mysqli_stmt_execute($stmt);
        header("Location: ../signup.php?signup=success");
            exit();

            }

        }

        }


    }
    mysqli_stmt_close($stmt);
    musqli_close($conn);

}
else{
    header("Location: ../signup.php");
    exit(); 
}
Avatar billede moddi100 Seniormester
28. februar 2019 - 09:39 #1
Jeg antager at signup ligger i samme mappe som den fil der?

I så fald skal alle dine header kald ændres til stien ./signup.php fremfor ../signup.php
Avatar billede olsensweb.dk Ekspert
28. februar 2019 - 10:05 #2
slå debug info til
hvor langt kommer du i coden ?? (lav nogle test udskrifter i coden)

>$sql = "SELECT uidUsers FROM users WHERE uidUsers=?";
hvad er meningen med dette ??, hvorfor selecte noget du har allerede

>I så fald skal alle dine header kald ændres til stien ./signup.php fremfor ../signup.php
man kunne også overveje at bruge absolute stier, istedet for relative, kig på $_SERVER['DOCUMENT_ROOT']
Avatar billede lefsa62 Seniormester
28. februar 2019 - 10:29 #3
Filen signup.inc.php ligger i includes og filen  signup.php ligger i robot.

Ved at undlader at indtaste user og mail men taster kode in så fejler den i browseren men i taster jeg det hele korrekt så kommer den frem med at den ikke kan finde url. sign up,php
Avatar billede lefsa62 Seniormester
28. februar 2019 - 10:42 #4
Hvad mener du med denne
>$sql = "SELECT uidUsers FROM users WHERE uidUsers=?";
Den skal vel vide hvor den skal hente den fra
Detter er vel afslutningen du mener
$_SERVER['DOCUMENT_ROOT']
Avatar billede moddi100 Seniormester
28. februar 2019 - 10:56 #5
Prøv at sammenligne din url hvis du går ind på siden signup manuelt, samt hvis du bliver redirectet af dit script. Hvordan ser begge ud?
Avatar billede lefsa62 Seniormester
28. februar 2019 - 12:35 #6
Nu har jeg lagt den online på webcopenhagen.dk i menuen login og derefter tryk på signup og tast et eller andet in så ser i resultatet
Avatar billede olsensweb.dk Ekspert
28. februar 2019 - 13:55 #7
omkring ln 14
>else if (password !== $passwordRepeat) {
mon ikke du har en fejl her, der mangler vel et $ foran password
altså
else if ($password !== $passwordRepeat) {
Avatar billede lefsa62 Seniormester
28. februar 2019 - 14:47 #8
Desværre virker den stadigvæk ikke. Den fejler vedr linje 11
Avatar billede lefsa62 Seniormester
28. februar 2019 - 14:55 #9
Jeg vil tro det er et eller andet med password at gøre. Hvis du undlader user navn og Emil så fejler den i browseren og det er rigtigt. Udfylder du så med password så fejlet den i linje 11 forbindelse med  emty Stack trace: #0  {main} at den prøver at udføre noget som den ikke kan klare
Avatar billede olsensweb.dk Ekspert
28. februar 2019 - 15:59 #10
ln 30, 44
>if (!mysql_stmt_prepare($stmt, $sql)) {
mangler der ikke et i mysql_stmt_
if (!mysqli_stmt_prepare($stmt, $sql)) {


ln 58
musqli_close($conn);
tastebøf
muyqli_close($conn);
Avatar billede olsensweb.dk Ekspert
28. februar 2019 - 18:07 #11
jeg har prøvet coden fra #0 med de rettelser jeg har fundes undervejs, og den kan godt oprette en bruger.
<?php
if (isset($_POST['signup-submit'])) {
    require 'dbh.inc.php';
    $username = $_POST['uid'];
    $email = $_POST['mail'];
    $password = $_POST['pwd'];
    $passwordRepeat = $_POST['pwd-repeat'];

    if (empty($username) || empty($email) || empty($password) || empty($passwordRepeat)) {
        header("Location: ../signup.php?error=emtyfields&uid=" . $username . "&mail=" . $email);
        exit();
    } else if (!filter_var($email, FILTER_VALIDATE_EMAIL) && !preg_match("/^[a-zA-Z0-9]*$/", $username)) {
        header("Location: ../signup.php?error=invalidmailuid");
        exit();
    } else if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        header("Location: ../signup.php?error=invalidmail&uid=" . $username);
        exit();
    } else if (!preg_match("/^[a-zA-Z0-9]*$/", $username)) {
        header("Location: ../signup.php?error=invaliduid&mail=" . $email);
        exit();
    } else if ($password !== $passwordRepeat) {
        header("Location: ../signup.php?error=passwordcheckuid=" . $username . "&mail=" . $email);
        exit();
    } else {
        $sql = "SELECT uidUsers FROM users WHERE uidUsers=?";
        $stmt = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($stmt, $sql)) {
            header("Location: ../signup.php?error=sqlerror");
            exit();
        } else {
            mysqli_stmt_bind_param($stmt, "s", $username);
            mysqli_stmt_execute($stmt);
            mysqli_stmt_store_result($stmt);
            $resultCheck = mysqli_stmt_num_rows($stmt);
            if ($resultCheck > 0) {
                header("Location: ../signup.php?error=usertaken&mail=" . $email);
                exit();
            } else {
                $sql = "INSERT INTO users (uidUsers, emailUsers, pwdUsers) VALUES (?, ?, ?)";
                $stmt = mysqli_stmt_init($conn);
                if (!mysqli_stmt_prepare($stmt, $sql)) {
                    header("Location: ../signup.php?error=sqlerror");
                    exit();
                } else {
                    $hashedPwd = password_hash($password, PASSWORD_DEFAULT);
                    mysqli_stmt_bind_param($stmt, "sss", $username, $email, $hashedPwd);
                    mysqli_stmt_execute($stmt);
                    header("Location: ../signup.php?signup=success");
                    exit();
                }
            }
        }
    }
    mysqli_stmt_close($stmt);
    mysqli_close($conn);
} else {
    header("Location: ../signup.php");
    exit();
}
Avatar billede lefsa62 Seniormester
28. februar 2019 - 18:53 #12
Jeg takker, hos mig fandt vi fejlen ved empty $email men viste ikke hvor den førte hen. Hvor fandt du den henne
Avatar billede olsensweb.dk Ekspert
28. februar 2019 - 19:16 #13
#12
>hos mig fandt vi fejlen ved empty $email
den fejlede ikke ved mig.

de fejl jeg beskrev i: #7, #10
Avatar billede lefsa62 Seniormester
01. marts 2019 - 00:26 #14
Jeg har et lille problem . Det er at alt virker bortset fra den siger i browseren at jeg er logget in men der er ikke sket noget på den side som det skulle stå du er logget på ,der skulle jeg  kunne trykke på logud knap

Her kommer login.inc.php

<?php

if (isset($_POST['login-submit'])){

    require 'dbh.inc.php';

    $mailuid = $_POST['mailuid'];
    $password = $_POST['pwd'];

    if (empty($mailuid) || empty($password)){
        header("Location: ../index.php?error=emptyfields");
        exit();

    }
    else{
        $sql = "SELECT * FROM users WHERE uidusers=? OR emailUsers=?;";
        $stmt = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($stmt, $sql)){
            header("Location: ../index.php?error=sqlerror");
            exit(); 
        }
      else{

        mysqli_stmt_bind_param($stmt, "ss", $mailuid, $mailuid);
        mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_get_result($stmt);
        if ($row = mysqli_fetch_assoc($result)){
            $pwdCheck = password_verify($password, $row['pwdUsers']);
            if ($pwdCheck == false) {
                header("Location: ../index.php?error=wrongpwd");
                exit();   

            }
            else if ($pwdCheck == true){
                session_start();
                $_SESSION['userid'] = $row['idUsers'];
                $_SESSION['userUid'] = $row['uidUsers'];

                header("Location: ../index.php?login=success");
                exit();
            }
            else {
                header("Location: ../index.php?error=wrongpwd");
                exit();
            }
        }
        else {
            header("Location: ../index.php?error=nouser");
            exit();
        }

      } 
    }
}
else {
    header("Location: ../index.php");
    exit();
}

Her kommer den index.php som der bliver logget in på

<?php
  require "header.php";
  ?>



        <main>
            <div class="wrapper-main">
                <section class="section-default">
                    <?php
                    if (isset($_SESSION['userId'])){
                      echo  '<p class="login-status">You are logged in!</p>';
                    }
                    else {

                        echo  '<p class="login-status">you are logged out!</p>';
                    }
                    ?>
                   
                   
                </section>
        </main>

<?php

    require "footer.php";
?>
Avatar billede lefsa62 Seniormester
01. marts 2019 - 06:57 #15
jeg har lavet en test log in som er  bruger: Test  kode: 123456
så kan du se hvad det sker
Avatar billede lefsa62 Seniormester
01. marts 2019 - 07:10 #16
Når man er logged in så skal man ikke kunne se login knap og heller ikke signup så skal det komme en knap som står logud på  :-((
Avatar billede olsensweb.dk Ekspert
01. marts 2019 - 07:29 #17
hvor har du din session_start ??, enhver side der anvender sessions skal have session_start liggende i toppen af siden, dvs før noget html
http://php.net/session_start
Avatar billede lefsa62 Seniormester
01. marts 2019 - 07:38 #18
jeg har den i header.php

som ser sådan ud

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" media="screen" href="style.css" />
    <title>Testlogin</title>
</head>
<style>
.logo src="logo.jpg"]{
    height: 120px;
    width:80px;

}
</style>
<body>
<header>
<nav>
<a href="#">
<img src="img/logo.jpg" alt="logo" width: 80px; height=120px;>
</a>
<ul>
    <li><a href="index.php">home</a></li>
    <li><a href="#">Ommig</a></li>
    <li><a href="#">Kontakt</a></li>
    <li><a href="#">Watever</a></li>
</ul>
    <div class="header-login">
    <?php
                    if (isset($_SESSION['userId'])){
                      echo  '<form action="includs/logout.inc.php" method="post">
                      <button type="submit" name="logout-submit">Logout</button>
                              </form>';
                    }
                    else {

                        echo  ' <form action="includes/login.inc.php" method="post">
                        <input type="text" name="mailuid" placeholder="username/E-mail...">
                        <input type="password" name="pwd" placeholder="password...">
                        <button type="submit" name="login-submit">Login</button>
                                </form>
                                <a href="signup.php">Signup</a>';
                    }
                    ?>
                   
     
       
    </div>


</nav>



</header>
</body>

</html>
Avatar billede lefsa62 Seniormester
01. marts 2019 - 09:02 #19
Jeg har slået fejlmedelse til og den fejler med at i header linje 2 så kan den ikke slå session til når den allerede er sendt ind
Avatar billede olsensweb.dk Ekspert
01. marts 2019 - 13:27 #20
jeg gætter på fejlen er noget med header already sendt on line 2.
du har sendt noget html til skærmen før din første php
det kunne være BOM
det kunne være mellemrum / linjeskift før <?php
Avatar billede lefsa62 Seniormester
01. marts 2019 - 14:09 #21
Det var en stort > I < hvor der skulle være et lille i.  Jeg takker for din store hjælp
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

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