Vinnaren i pepparkakshustävlingen!
2018-09-23, 06:33
  #1
Medlem
Mulle-Meths avatar
Hej!

Jag har problem med flertalet typer av felmeddelanden i PHP, och för att klargöra så menar jag inte fatals eller annat som man kan skruva på i .ini-filen utan felmeddelanden jag själv försöker implementera.

Här har vi ett litet formulär:

Kod:
<form action="registrering.php" method="POST">
    <input type="text" placeholder="Enter email..." id="email" name="email">
    <input type="password" placeholder="Enter password..." id="password" name="password">
    <input type="password" placeholder="Repeat password... id="rePassword" name="rePassword">
    <button type="submit" id="submit" name="submit">Submit</button>
</form>

<?php

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

    include_once 
'conn.inc.php';

    
$email mysqli_escape_string($conn$_POST['email']);
    
$password mysqli_escape_string($conn$_POST['password'];
    
$rePassword mysqli_escape_string($conn$_POST['rePassword'];

    
// Här kommer diverse error handlers

}

?>

Här är conn.inc.php (ett separat .php-dokument för att koppla upp mot db):

Kod:
<?php

$servername 
'localhost';
$username 'root';
$password '';
$database 'flashbackusers';

$conn mysqli_connect($servername$username$password$database);

Error handlers som inte fungerar:

Kontrollera om den inmatade mailadressen är legit

Kod:
<?php

if(!filter_var($emailFILTER_VALIDATE_EMAIL)) {
    
header('Location: registrering.php?signup=invalid_email');
    exit();
}

?>

Ger "invalid_email" trots korrekt inmatad mailadress.

Kontrollera att alla fält är ifyllda

Kod:
<?php

if(empty($email) || empty($password) || empty($rePassword)) {
    
header('Location: registrering.php?signup=empty');
    exit();
}

?>

Ger "signup=empty" trots att alla fält är ifyllda.

Nu har jag suttit med detta hela natten så det får räcka med buggar, men jag kommer med fler efter sömnen som ni gärna får hjälpa mig att lösa

Mvh, Mulle-Meth
Citera
2018-09-23, 08:11
  #2
Medlem
Citat:
Ursprungligen postat av Mulle-Meth
Kontrollera om den inmatade mailadressen är legit

Kod:
<?php

if(!filter_var($emailFILTER_VALIDATE_EMAIL)) {
    
header('Location: registrering.php?signup=invalid_email');
    exit();
}

?>

Citat:
Ursprungligen postat av Mulle-Meth
Kontrollera att alla fält är ifyllda

Kod:
<?php

if(empty($email) || empty($password) || empty($rePassword)) {
    
header('Location: registrering.php?signup=empty');
    exit();
}

?>

Ger "signup=empty" trots att alla fält är ifyllda.

Båda dessa delar är helt korrekta. Felet ligger någon annanstans. Har du testat att printa output för $email, $password och $rePassword precis innan if-satsen. Följer dom med som dom ska?
__________________
Senast redigerad av DJ-Emerald 2018-09-23 kl. 08:16.
Citera
2018-09-23, 08:50
  #3
Medlem
Mulle-Meths avatar
Citat:
Ursprungligen postat av DJ-Emerald
Båda dessa delar är helt korrekta. Felet ligger någon annanstans. Har du testat att printa output för $email, $password och $rePassword precis innan if-satsen. Följer dom med som dom ska?

Jag antar att du syftar på att köra en helt vanlig echo? Ingen av variablerna skrivs i alla fall ut. Felmeddelandet jag skrivit in i URL:en visas dock ALLTID av någon anledning, oavsett vad jag gör.

Kan det vara något konstigt med kopplingen till servern eller dylikt?
Citera
2018-09-23, 08:57
  #4
Medlem
Mulle-Meths avatar
Citat:
Ursprungligen postat av DJ-Emerald
Båda dessa delar är helt korrekta. Felet ligger någon annanstans. Har du testat att printa output för $email, $password och $rePassword precis innan if-satsen. Följer dom med som dom ska?

Ok, nu kan jag vara något på spåren.

https://gyazo.com/bf0aa12301a7a8622e5958c171ff5db4

Nu körde jag koden som kontrollerar huruvida inmatningsfälten är ifyllda eller inte, och PHP fick damp. Den får alltså inte kontakt med min connection-fil månne? Eller hur skulle du tolka dessa felmeddelanden?
Citera
2018-09-23, 09:09
  #5
Medlem
Citat:
Ursprungligen postat av Mulle-Meth
Ok, nu kan jag vara något på spåren.

https://gyazo.com/bf0aa12301a7a8622e5958c171ff5db4

Nu körde jag koden som kontrollerar huruvida inmatningsfälten är ifyllda eller inte, och PHP fick damp. Den får alltså inte kontakt med min connection-fil månne? Eller hur skulle du tolka dessa felmeddelanden?

Ligger conn.inc.php i mappen Lagersystem?

Testa include_once med " och inte '
__________________
Senast redigerad av DJ-Emerald 2018-09-23 kl. 09:11.
Citera
2018-09-23, 09:13
  #6
Medlem
Mulle-Meths avatar
Citat:
Ursprungligen postat av DJ-Emerald
Ligger conn.inc.php i mappen Lagersystem?

Testa include_once med " och inte '

Jag körde en liten fuling och klistrade bara in koden i den ursprungliga .php-filen. Jag kan se om fält är tomma eller inte, men mailfunktionen verkar inte vilja lira...
Citera
2018-09-23, 09:20
  #7
Medlem
Citat:
Ursprungligen postat av Mulle-Meth
Jag körde en liten fuling och klistrade bara in koden i den ursprungliga .php-filen. Jag kan se om fält är tomma eller inte, men mailfunktionen verkar inte vilja lira...

Vi kom en bit framåt, men kan inte komma på vad som är tokigt isf. Prova och ställ frågan på www.phpportalen.net om du vill. Dom är ju uber-experter på sånt här.
Citera
2018-09-26, 18:01
  #8
Medlem
SKetchers avatar
Citat:
Ursprungligen postat av DJ-Emerald
Vi kom en bit framåt, men kan inte komma på vad som är tokigt isf. Prova och ställ frågan på www.phpportalen.net om du vill. Dom är ju uber-experter på sånt här.

Alla POST-fälten bör ju vara tomma.
Dem blir aldrig redeklarade till $email etc för att $conn()-funktionen inte.

Gör en ->
Kod:
var_dump($email,$password); 
innan du validerar mailen.

*edit. Citera fel person men är på mobilen så kan inte ändra.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback