php.ini activeren?
Ik heb nu een parse error op deze pagina.
http://www.macnoob.nl/temp_files/maggiez/gastenboek.php
Lijkt me dat hij gewoon een melding hoort te geven?
Indien je geen eigen server hebt, waar plaats je je php.ini bestand?
Deze website staat in een submap van een andere website. Maar het ini bestand staat in een cgi-bin map, helemaal in de root van de hoofdmap.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
//hier jouw eigen code
?>
ini_set('display_errors', 1);
error_reporting(E_ALL);
//hier jouw eigen code
?>
Gewijzigd op 17/07/2012 21:44:22 door Aad B
Maar dat werkt ook niet. Misschien is het gewoon niet de juiste foutmelding?
?
Heb je een bestand met daarin: Dan geeft hij gewoon een melding ja!
Je kan hier wat code laten zien van je script, misschien wordt dan duidelijk waarom het geen foutmelding geeft, misschien heeft iemand hier een tip maar plaats hier geen 1000 regels want daar begint niemand aan.
if (isset($_POST['bericht']))
{// Naam ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if ($_POST['naam'] == "")
$error[] = "<p class=\"foutmelding\">- Fout: Je hebt geen naam ingevuld.</p>";
else
$naam = $_POST['naam'];
// Email :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if ($_POST['email'] == "")
$error[] = "<p class=\"foutmelding\">- Fout: Je hebt geen e-mailadres ingevuld.</p>";
else
$email = $_POST['email'];
// Bericht :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
$bericht = $_POST['bericht'];
if (!isset($error[0]))
{$query = "INSERT INTO $tab_gasten (naam,email,bericht)
VALUES ('".$naam."', '".$email."', '".$bericht."',)
mysql_query($query);
}
}
Toevoeging op 17/07/2012 22:01:12:
Maar goed, zal wel een beginnersfout zijn. Ik heb lange tijd niet gewerkt aan websites en moet weer helemaal from scratch beginnen. Met een hoop geknip en gepruts maakte ik vaak leuke dingen, maar nu hang ik al bij een witte pagina.
zet je code eens tussen php tags.
Gewijzigd op 17/07/2012 22:06:53 door - SanThe -
De volledige pagina is wat veel, maar goed ik post hem toch even.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
require("include/config.inc.php");
include("include/head.php");
ini_set('display_errors', 1);
error_reporting(E_ALL);
//$_POST = RealEscape($_POST);
$_SERVER = RealEscape($_SERVER);
//code voor escape te doen @ elementen in array
function from_array($x=null) {
if(!isset($x)) return null;
else if(is_string($x)) return mysql_real_escape_string($x);
else if(is_array($x)) {
foreach($x as $k=>$v) {
$k2=mysql_real_escape_string($k);
if($k!=$k2) unset($x[$k]);
$x[$k2]=from_array($v);
}
return $x;
}
}
echo "<div id=\"bodypic3\"></div>
<div id=\"bodytextpic\">
<div id=\"bodytext\">
<h1>Gastenboek</h1>";
if (isset($_POST['bericht']))
{// Naam ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if ($_POST['naam'] == "")
$error[] = "<p class=\"foutmelding\">- Fout: Je hebt geen naam ingevuld.</p>";
else
$naam = $_POST['naam'];
// Email :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if ($_POST['email'] == "")
$error[] = "<p class=\"foutmelding\">- Fout: Je hebt geen e-mailadres ingevuld.</p>";
else
$email = $_POST['email'];
// Bericht :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
$bericht = $_POST['bericht'];
if (!isset($error[0]))
{$query = "INSERT INTO $tab_gasten (naam,email,bericht)
VALUES ('".$naam."', '".$email."', '".$bericht."',)
mysql_query($query);
}
}
echo $bla;
?>
require("include/config.inc.php");
include("include/head.php");
ini_set('display_errors', 1);
error_reporting(E_ALL);
//$_POST = RealEscape($_POST);
$_SERVER = RealEscape($_SERVER);
//code voor escape te doen @ elementen in array
function from_array($x=null) {
if(!isset($x)) return null;
else if(is_string($x)) return mysql_real_escape_string($x);
else if(is_array($x)) {
foreach($x as $k=>$v) {
$k2=mysql_real_escape_string($k);
if($k!=$k2) unset($x[$k]);
$x[$k2]=from_array($v);
}
return $x;
}
}
echo "<div id=\"bodypic3\"></div>
<div id=\"bodytextpic\">
<div id=\"bodytext\">
<h1>Gastenboek</h1>";
if (isset($_POST['bericht']))
{// Naam ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if ($_POST['naam'] == "")
$error[] = "<p class=\"foutmelding\">- Fout: Je hebt geen naam ingevuld.</p>";
else
$naam = $_POST['naam'];
// Email :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if ($_POST['email'] == "")
$error[] = "<p class=\"foutmelding\">- Fout: Je hebt geen e-mailadres ingevuld.</p>";
else
$email = $_POST['email'];
// Bericht :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
$bericht = $_POST['bericht'];
if (!isset($error[0]))
{$query = "INSERT INTO $tab_gasten (naam,email,bericht)
VALUES ('".$naam."', '".$email."', '".$bericht."',)
mysql_query($query);
}
}
echo $bla;
?>
Gewijzigd op 17/07/2012 22:08:02 door Ferdi Verbeek
Gebruik in php / om je $error[] ' en voor de html er in " --> scheelt je al die \
$naam aanmaken is niet nodig: je hebt de informatie beschikbaar in de $_POST waarde.
Je query is lek/je beveiligd nergens de input.
Je controleert niet of de query gelukt is/hebt geen foutafhandeling.
In dit stukje heb je ook geen verbinding met de db, maar dat zal ergens anders geregeld zijn.
Zet error-reporting helemaal boven aan je script, niet na de include.
Gewijzigd op 17/07/2012 22:10:21 door Obelix Idefix
ini_set('display_errors', 1);
error_reporting(E_ALL);
direct na de php tag en niet pas na de include/require.
Volg ook de opmerkingen van SanThe en Obelix en Idefix op.
Mmm, nou goed ik ga er morgen weer naar kijken, want kom er niet uit en begrijp er gewoon te weinig van. Zo te zien moet ik eens basic sql oefeningen gaan maken. Gaap.
Code (php)
1
2
3
4
2
3
4
<?php
$query = "INSERT INTO $tab_gasten (naam,email,bericht)
VALUES ('".$naam."', '".$email."', '".$bericht."')";
?>
$query = "INSERT INTO $tab_gasten (naam,email,bericht)
VALUES ('".$naam."', '".$email."', '".$bericht."')";
?>
... $email."', '".$bericht."',)
moet zijn:
... $email."', '".$bericht."')";
Is het verstandig om de tabelnaam in een variabele te hebben staan?
Toevoeging op 17/07/2012 22:24:22:
Obelix en Idefix op 17/07/2012 22:08:43:
Je controleert nergens of $_POST['naam'] bestaat.
Gebruik in php / om je $error[] ' en voor de html er in " --> scheelt je al die \
$naam aanmaken is niet nodig: je hebt de informatie beschikbaar in de $_POST waarde.
Je query is lek/je beveiligd nergens de input.
Je controleert niet of de query gelukt is/hebt geen foutafhandeling.
In dit stukje heb je ook geen verbinding met de db, maar dat zal ergens anders geregeld zijn.
Zet error-reporting helemaal boven aan je script, niet na de include.
Gebruik in php / om je $error[] ' en voor de html er in " --> scheelt je al die \
$naam aanmaken is niet nodig: je hebt de informatie beschikbaar in de $_POST waarde.
Je query is lek/je beveiligd nergens de input.
Je controleert niet of de query gelukt is/hebt geen foutafhandeling.
In dit stukje heb je ook geen verbinding met de db, maar dat zal ergens anders geregeld zijn.
Zet error-reporting helemaal boven aan je script, niet na de include.
Waarom niet $naam? Hoe zou het anders moeten? Dit is toch om te zeggen welke info bij wat hoort? Heb nu variabelen erbij gezet, maar krijg gewoon een dubbele melding nu :P Snap dat nog niet.
Toevoeging op 17/07/2012 22:35:11:
Goed, in ieder geval bedankt allemaal weer. Ik ga morgen eens verder. Ik moet nog veel leren. Ik begrijp aardig wat, maar meer wat er gebeurt dan wat het betekent.
Het lijkt mij dat je bij een form aangeeft bij iedere informatie die ingevuld wordt bij welke tag dat hoort. En vervolgens welke tag in welke positie in een tabel moet staan. Maar ik begrijp dat POST en het variabelen verhaal niet geloof ik.
Gewijzigd op 17/07/2012 22:25:43 door Ferdi Verbeek
Ferdi Verbeek op 17/07/2012 22:16:16:
Je hebt de gegevens zoals die via het formulier gepost zijn in een variabele staan: $_POST['naam_variabel']. Waarom zou je dan een nieuwe variabele ($variabele_naam) gaan aanmaken? Je kunt waar je nu $variabele_naam gebruikt, toch ook prima $_POST['variabele_naam'] gebruiken?!
Voor variabele_naam kun je in jouw situatie lezen zowel naam, email als bericht.
Voordelen: minder belasting van geheugen, minder variabelen, minder typewerk (en dus kans op fouten) en je weet altijd dat zo'n $_POST vanuit een 'externe' bron komt (en je dus voorzichtig moet zijn met (het weergeven/verwerken van) de inhoud er van). Van $variabele_naam weet je dit niet: die kun je ook zelf hebben aangemaakt in het script.
Misschien als voorbeeld: wat jij nu doet is je legt je boodschappen van het ene winkelwagentje, wat door anderen! is volgeladen, in je eigen winkelwagentje (zonder enige vorm van controle op betrouwbaarheid (lust je wel alles, is het nog houdbaar)) waar (misschien) al eigen boodschappen in zitten en daarmee ga je naar de kassa. Vraag is hoe jij straks nog weet welke boodschappen van jou zijn (en dus 'veilig') en welke er door een ander is ingelegd (per definitie onveilig). Veiliger is het dus om het in 2 winkelwagentjes te laten liggen. Misschien onhandig om naar de kassa te gaan. Als je het dan toch in 1 winkelwagentje wilt, zul je heeeeel goed moeten controleren of de boodschappen voldoen aan jouw criteria.
Gewijzigd op 18/07/2012 09:22:59 door Obelix Idefix
Obelix en Idefix op 18/07/2012 09:16:07:
Misschien als voorbeeld: wat jij nu doet is je legt je boodschappen van het ene winkelwagentje, wat door anderen! is volgeladen, in je eigen winkelwagentje (zonder enige vorm van controle op betrouwbaarheid (lust je wel alles, is het nog houdbaar)) waar (misschien) al eigen boodschappen in zitten en daarmee ga je naar de kassa. Vraag is hoe jij straks nog weet welke boodschappen van jou zijn (en dus 'veilig') en welke er door een ander is ingelegd (per definitie onveilig). Veiliger is het dus om het in 2 winkelwagentjes te laten liggen.
Leuk voorbeeld. ;-)