Kezdőoldal » Számítástechnika » Programozás » PHP-ban ezt, hogyan lehet?...

PHP-ban ezt, hogyan lehet? EMPTY és Email validator?

Figyelt kérdés

validator nélkül: http://leventebognar.com/gyaki/admin/insert.php


itt pedig a kód


<!DOCTYPE html>

<html>

<head>

<title>Create - PHP CRUD</title>

</head>

<body>

<?php

include 'display.php';


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


//database configuration


include 'config.php';


extract($_REQUEST);


//sql insert


$query=mysqli_query($conn,"insert into contactform SET id='$id',name='$name', company='$company', email='$email', telephone='$telephone', address='$address', message='$message'") or die(mysqli_error($conn));


//insert query to the database


if($query){


//if successful query


echo "New record was saved.";


}


}


?>


<!--form-->


<form action='#' method='post' border='0'>


<table>


<tr>


<td>id</td> <td><input type='text' name='id' /></td>


</tr>


<tr>


<td>name</td> <td><input type='text' name='name' /></td>


</tr>


<tr>


<td>company</td> <td><input type='text' name='company' /></td>


</tr>


<tr>


<td>email</td> <td><input type='text' name='email' /></td>


</tr>


<tr>


<td>telephone</td> <td><input type='text' name='telephone' /></td>


</tr>


<tr>


<td>address</td> <td><input type='text' name='address' /></td>


</tr>


<tr>


<td>message</td> <td><input type='text' name='message' /></td>


<tr>


<td></td>


<td>


<input type='submit' value='Save' name="save" />


</td>


</tr>


</table>


</form>


<a href="index.php">Back</a>


</body>


</html>



2015. dec. 3. 16:47
 1/6 anonim ***** válasza:

1) Amíg nincs injection ellen védve a kódod addig szerintem nem az invalid email lesz a legnagyobb problémád!

2) Használj PDO-t! (prepared statement)

3) Reguláris kifejezéssel lehet szépen szűrni az e-mail-t, de a neten van 1000 kód készen. Egyébként ezen is érdemes elgondolkodni: [link]

4) EMPTY?? Magyarul azt akarod megvizsgálni, hogy üres-e? Ez egy sima "ha" feltétel...

2015. dec. 3. 17:15
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:

"extract($_REQUEST);"


ezt soha, semmilyen körülmények között ne használd, az öngyilkosság egy igen nevetséges és amatőr módja...


SQL-t pedig csak prepared statement-el adj át a szervernek, vagy szintén kakukk.

2015. dec. 3. 17:27
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:

<!DOCTYPE html>

<html>


<head>


<title>Create - PHP CRUD</title>


</head>


<body>


<?php



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


//include database configuration


include 'config.php';


extract($_REQUEST);


//sql insert statement


$query=mysqli_query($conn,"insert into contactform SET email='$email'") or die(mysqli_error($conn));


//insert query to the database


if($query){


//if successful query


echo "New record was saved.";


}


}


?>


<!--we have our html form here where user information will be entered-->


<form action='#' method='post' border='0'>


<table>


<tr>


<td>email</td> <td><input type='text' name='email' /></td>


</tr>


<tr>


<td>


<input type='submit' value='Save' name="save" />


</td>


</tr>


</table>


</form>



<?php

// Variable to check

$emailvalid = $_POST['email'];



// Remove all illegal characters from email

$emailvalid = filter_var($emailvalid, FILTER_SANITIZE_EMAIL);


// Validate e-mail

if (!filter_var($emailvalid, FILTER_VALIDATE_EMAIL) === false) {

echo("$email is a valid email address");

} else {

echo("$email is not a valid email address");

}

?>



</body>


</html>


így néz ki a kód, most király, az emailt ellenőrzi amit beírok a formba, de az a gond, hogy mielőtt nem írom be, hibát ad ki, hogy lehetne elérni, hogy ne rinyáljon előtte? :D


Az a baj, hogy amatőr vagyok


Miért kell és mi az az injenction elleni védelem? :O


Miért nem jó az extract($_Request) ??

prepared statement?

2015. dec. 3. 17:34
 4/6 A kérdező kommentje:

Régóta keresem a megoldást, de nagyon nehéz rátalálni, most isset-tel megoldtam amit akartam, de nem tökéletes, mivel a következő lapra ugrik és csak akkor mondja meg hogy valid e az email vagy sem


Tényleg érdekel és időre meg is kell csinálnom, nem azért kérdezek annyit mert unatkozok, úgyhogy ha válaszoltok azt megköszönöm!

2015. dec. 3. 18:04
 5/6 anonim ***** válasza:

"Miért kell és mi az az injenction elleni védelem? :O "

Tegyük fel, hogy az én e-mail címem:

a@a.hu';DROP TABLE contactform; SELECT * FROM contactform WHERE 't' = 't

tehát ha szűrés nélkül megkapja az adatázisszerver, az alábbi lekérdezések fognak lefutni

insert into contactform SET email='a@a.hu';

DROP TABLE contactform;

SELECT * FROM contactform WHERE 't' = 't'

és szépen töröltük is a táblát.


Ezért kell valamilyen védelem ellene.


Az egyik a már említett prepared statement (PDO):

[link]

a másik, a felhasználótól érkező adatok szűrése:

[link]

2015. dec. 3. 18:27
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

Nyugtass meg, hogy ennyi hozzáértéssel nem megrendelésre készíted, mert elsírom magam!

Az oké, hogy még tanulsz - mi szólunk is a hibákért - és majd javítod őket, meg apránként rájössz majd. Ez a kód remek GYAKORLÁSNAK! De csak remélni merem, hogy nem adod ki a kezed közül és az isten mentse meg azt az embert akihez ez ilyen formában kerülne...


Nincs gond azzal hogy tanulsz, de ne más kárán tedd!


Egyébként nem tudom hol keresed régóta, mert nekem a google első találatai is megválaszolják a kérdéseid.


pl.:

>Régóta keresem a megoldást, de nagyon nehéz rátalálni, most isset-tel megoldtam amit akartam, de nem tökéletes, mivel a következő lapra ugrik és csak akkor mondja meg hogy valid e az email vagy sem.

Google: js email validator

[link]

(demo-val együtt, így látod hogy kell használni)

Ettől függetlenül php-ben is szűrni kell, arra az esetre, ha tiltva lenne a js!


>Miért kell és mi az az injenction elleni védelem?

Google: mysql injection

[link]


>prepared statement?

Google: prepared statement pdo

[link]


és itt van plusz két link, olvasmánynak:

[link]

[link]


Ezt többszörösen dolgozd át kérlek, mert ha így adod oda valakinek, akkor nagyon sokat fogják emlegetni a kedves anyukádat! :)

2015. dec. 4. 11:00
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!