Ik heb het CMS waar ik mee bezig was afgerond, maar nu ben ik een nieuwe aan het maken voor iets anders en probeer ik jullie tips van destijds te gebruiken.
Zijn er nog dingen die ik beter kan doen en weet iemand een goeie website waar een tutorial over foutafhandeling staat.
Ik ben nu van plan wel mysqli te gebruiken en normale PHP, dus geen OOP.
<?php
include "include/config.php";
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if (strlen($_POST['pv_title'])<1)
{
$melding = 'Er is geen titel ingevuld!';
}
else
{
if (strlen($_POST['pv_description'])<1)
{
$melding = 'Er is geen beschrijving ingevuld!';
}
else
{
if (strlen($_POST['pv_link'])<9)
{
$melding = 'Er is geen link ingevuld!';
}
else
{
$queryInsert = mysqli_query("INSERT INTO p_video
(pv_title,
pv_description,
pv_link)
VALUES ('" . $pv_title=mysql_real_escape_string($_POST['pv_title']) . "',
'" . $pv_description=mysql_real_escape_string($_POST['pv_description']) . "',
'" . $pv_link=mysql_real_escape_string($_POST['pv_link']) . "')");
if($queryInsert)
{
header("location: SOMEWHERE.php");
}
}
}
}
}
?>
<fieldset>
<?php
echo $melding;
?>
<form action=""
method="post">
Titel:
<input type="text"
name="pv_title"><br>
Beschrijving:
<input type="text"
name="pv_description"><br>
Link:
<input type="text"
name="pv_link"><br>
<br>
<input type="submit"
name="submit">
</form>
</fieldset>
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/sandecv3/domains/sanderpals.nl/public_html/youtube/add.php on line 49
toch vrij duidelijk:
mysqli_real_escape_string verwacht precies 2 parameters, er wordt er 1 gegeven op regel 49 van ...
Ja maar ik kan jammer genoeg de fout niet vinden in de php.
Verder heb ik wel 2 domme fouten gevonden in me php die er niets mee te maken hadden. ik had 2 keer een mysqli_query en er stond === false en heb dit verranderd naar == false.
<?php
if(count($melding) == 0)
{
$queryInsert = "INSERT INTO p_video
(pv_title,
pv_description,
pv_link)
VALUES ('" . $pv_title=mysqli_real_escape_string($_POST['pv_title']) . "',
'" . $pv_description=mysqli_real_escape_string($_POST['pv_description']) . "',
'" . $pv_link=mysqli_real_escape_string($_POST['pv_link']) . "')";
# Check of query is gelukt
if (($queryInsert = mysqli_query($queryInsert)) == false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($queryInsert, mysqli_error(),'Fout bij het invoegen van de post.');
}
else
{
# De query is geluk! :)
echo 'Gebruiker is toegevoegt!';
}
}
?>
Ik mis nog wat validatie, volgens mij als ik dit zou typen als titel in jouw CMS: "<script>alert('mag niet...')</script>"; dan zou die dat uitvoeren... de mysqli_real_escape_string is wel goed maar dat is dus pas als je het in de database invoert, de value POSTS van je formulier zou ik ook valideren met bijvoorbeeld een standaard functie die de variable trimt en ervoor zorgt dat je geen speciale tags kan gebruiken.
De hele functie ShowSQLError() { } zou je prima in een functions.php kunnen plaatsen, zodat je die functie binnen je hele volledige script kunt gebruiken.
En $text="Error" is best nietszeggend voor je bezoekers als je query mislukt.
Vertel ze gewoon dat er een technisch probleem bij jouw kant is, en dat ze het later nog eens moeten proberen.