Kleine Vragen Topic #2

Gestart doorKingunit3.067 reacties11.764 weergaven

3.068 berichten · pagina 201 van 205

Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Thijmgrijs schreef:
Eerdere citaten tonen
Rik schreef:
Haal ze buiten de quotatie-tekens:
"UPDATE prijzen SET psprijs = " . $ps . ", webprijs = " . $web. ", cmsprijs = " . $cms . ", systeemprijs = " . $sys . ""

Loop er nog op vast,

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /home/thijmip94/domains/thijmenwijers.nl/public_html/admin/optiessaved.php on line 107


Op lijn 107 gekeken en daar staat dit:

$row = mysqli_fetch_array($result)


Volledige code is:

[COLOR= #0000BB]<?php
                    
            $ps[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]ps[/COLOR][COLOR= #007700]];[/COLOR] 
            [COLOR= #0000BB]$web[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]web[/COLOR][COLOR= #007700]];[/COLOR] 
            [COLOR= #0000BB]$cms[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]cms[/COLOR][COLOR= #007700]];[/COLOR] 
            [COLOR= #0000BB]$sys[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]sys[/COLOR][COLOR= #007700]];[/COLOR] 

            
 
            [COLOR= #0000BB]$con[/COLOR][COLOR= #007700]=[/COLOR]mysqli_connect[COLOR= #007700]([/COLOR][COLOR= #DD0000]"localhost"[/COLOR][COLOR= #007700],[/COLOR][COLOR= #DD0000]"xxx"[/COLOR][COLOR= #007700],[/COLOR][COLOR= #DD0000]"xxx"[/COLOR][COLOR= #007700],[/COLOR][COLOR= #DD0000]"xxx"[/COLOR][COLOR= #007700]);[/COLOR]
            [COLOR= #FF8000]// Check connection[/COLOR]
            [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR]mysqli_connect_errno[COLOR= #007700]())
                {[/COLOR]
                    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]"Kan niet connecten: "[/COLOR] [COLOR= #007700].[/COLOR] mysqli_connect_error[COLOR= #007700]();
                }[/COLOR]

            [COLOR= #0000BB]$result[/COLOR] [COLOR= #007700]=[/COLOR] mysqli_query[COLOR= #007700]([/COLOR][COLOR= #0000BB]$con[/COLOR][COLOR= #007700],[/COLOR][COLOR= #DD0000]"UPDATE prijzen SET psprijs = "[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #0000BB]$ps[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #DD0000]", webprijs = "[/COLOR][COLOR= #007700].[/COLOR] [COLOR= #0000BB]$web[/COLOR] [COLOR= #007700].[/COLOR][COLOR= #DD0000]", cmsprijs = "[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #0000BB]$cms[/COLOR] [COLOR= #007700].[/COLOR][COLOR= #DD0000]", systeemprijs = "[/COLOR][COLOR= #007700].[/COLOR] [COLOR= #0000BB]$sys[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #DD0000]""[/COLOR][COLOR= #007700]);[/COLOR]
            [COLOR= #0000BB]$row[/COLOR] [COLOR= #007700]=[/COLOR] mysqli_fetch_array[COLOR= #007700]([/COLOR][COLOR= #0000BB]$result[/COLOR][COLOR= #007700])[/COLOR]
            ?>


Wie kan me helpen?
Je qeury geeft een fout terug, dus mysqli_query geeft false terug.

Je moet dus gaan debuggen en de mysqli_error ergens echo-en!
0
Berichten
968
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
@Rik,

Heb al geprobeerd om de error zichtbaar te laten krijgen door:

if($result === FALSE) {
    die(mysql_error());
}


Maar zonder enig resultaat.
0
Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Thijmgrijs schreef:
@Rik,

Heb al geprobeerd om de error zichtbaar te laten krijgen door:

if($result === FALSE) {
    die(mysql_error());
}
Maar zonder enig resultaat.

Omdat je niet met MySQL werkt maar met MySQLi
0
Berichten
968
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Antonn schreef:
Eerdere citaten tonen
Thijmgrijs schreef:
Heb al geprobeerd om de error zichtbaar te laten krijgen door:

if($result === FALSE) {
    die(mysql_error());
}


Maar zonder enig resultaat.
Omdat je niet met MySQL werkt maar met MySQLi

Oops, de i vergeten haha, het is nog effies wennen yummie
Edit:

Ik krijg nu dit als output,

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /home/thijmip94/domains/thijmenwijers.nl/public_html/admin/optiessaved.php on line 110

Heb al google gezocht, wat bedoelt deze melding precies?

Edit2:

Heb nu dit ervan gemaakt;

$row = mysqli_fetch_array($result)
            or die("Error: ".mysqli_error($result));


Maar nu geeft die aan dat beide lijnen fout zijn met:
mysqli_fetch_array() expects parameter 1 to be mysqli_result & mysqli_error() expects parameter 1 to be mysqli
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
$con meegeven.
0
Berichten
968
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Aarclay schreef:
$con meegeven.
Waar moet die komen?
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Ah, ik zie het al. Die $con hoort niet bij de _array(). Zorg in ieder geval voor goede foutafhandeling.
Wat is je hele foutmelding, want er ontbreekt ook een gedeelte.
0
Berichten
3.001
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Antonn schreef:
Eerdere citaten tonen
Bugged schreef:
Heb een vraag over de mail/header functie van PHP.
Ik ben een contactformulier aan het maken, waarbij ik wil dat het emailadres wat is ingevoerd in het contactformulier, dat die gelijk als Reply-To wordt gezet.

Bij een vast reply-to is de code als volgt:
Spoiler tonen
Codeblok (voorbeeld.php):
1

$headers = Reply-To: Naam . "rn"

Nu loopt ik echter stuk bij een variabele Reply-to

Codeblok (voorbeeld.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
55
56
57
58
59


// Bestand: contact.php
// Auteur: Joep ---
// Doel van het bestand: De gebruiker kan op deze pagina een formulier invullen waarmee er een mail naar de staff(s)
// wordt verzonden met de ingevulde waarden.

// Belangrijke variabelen aanmaken

$servertijd = date("j-m-Y H:i:s");
$email = "---";
$naam = "Joep";
$onderwerp = "*** - Contactformulier";
$headers = MIME-Version: 1.0 . "rn";
$headers .= Content-type: text/html; charset=iso-8859-1 . "rn";
$headers .= From: *** Automailer . "rn";

// Controle of alle velden zijn ingevuld
if(isset($_POST[submit])){
if(trim($_POST[hypdoNaam])){
if(trim($_POST[emailAdres])){
if (trim($_POST[eMail])){
$headers .= Reply-To: $_POST[hypdoNaam] . "rn" ;
$reactie = htmlentities($_POST[eMail]);
$bericht = "Beste ".$naam.",

Er is een nieuw contactformulier ingevuld op de website.

De gegevens staan hieronder.

Servertijd: "
.$servertijd."

Hyper: "
.$_POST[hypdoNaam]."

E-mailadres: "
.$_POST[emailAdres]."

Ingevuld bericht: "
.$reactie."

IP: "
.$_SERVER[REMOTE_ADDR]."

Het ingevulde e-mailadres is tevens als reply-adres ingevoerd.

Je hoeft dus niet handmatig het adres aan te passen, je kan simpelweg op "Beantwoorden" klikken.

Groet,

*** - Automailer"
; // Het bericht dat wordt verzonden, wijzig de variabelen niet!
if(mail($email, $onderwerp, $bericht, $headers)){
echo "We hebben je bericht verzonden!";
}
else{
echo "Er is iets misgegegaan bij het verzenden van je bericht!
Je bericht is niet verzonden, probeer het later nog een keer!"
;
}
}
else{
echo "Je hebt geen bericht ingevoerd!";
}
}
else{
echo "Je bent vergeten je e-mailadres in te vullen!";
}
}
else{
echo "Je bent je Hypernaam vergeten in te vullen!";
}
}
else{
?>


}
?>

De header komt na de trim van de eMail / regel 21.
Sorry voor de eventuele spaghetti-code, op of aanmerkingen, kritiek mag, indien opbouwend.
Wie zou me kunnen helpen? Een vraag op stackoverflow hielp me niet echt verder.
Alvast bedankt thumbsup
Let op voor mail header injection

Kan je hier wat uitgebreider op ingaan?
Op een site, kan hem even niet vinden, stond dat het al sinds PHP 5.3 niet kan namelijk.
0
Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Bugged schreef:
Eerdere citaten tonen
Antonn schreef:
Eerdere citaten tonen
Bugged schreef:
Heb een vraag over de mail/header functie van PHP.
Ik ben een contactformulier aan het maken, waarbij ik wil dat het emailadres wat is ingevoerd in het contactformulier, dat die gelijk als Reply-To wordt gezet.

Bij een vast reply-to is de code als volgt:
Spoiler tonen
Codeblok (voorbeeld.php):
1

$headers = Reply-To: Naam . "rn"
Nu loopt ik echter stuk bij een variabele Reply-to

Codeblok (voorbeeld.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
55
56
57
58
59


// Bestand: contact.php
// Auteur: Joep ---
// Doel van het bestand: De gebruiker kan op deze pagina een formulier invullen waarmee er een mail naar de staff(s)
// wordt verzonden met de ingevulde waarden.

// Belangrijke variabelen aanmaken

$servertijd = date("j-m-Y H:i:s");
$email = "---";
$naam = "Joep";
$onderwerp = "*** - Contactformulier";
$headers = MIME-Version: 1.0 . "rn";
$headers .= Content-type: text/html; charset=iso-8859-1 . "rn";
$headers .= From: *** Automailer . "rn";

// Controle of alle velden zijn ingevuld
if(isset($_POST[submit])){
if(trim($_POST[hypdoNaam])){
if(trim($_POST[emailAdres])){
if (trim($_POST[eMail])){
$headers .= Reply-To: $_POST[hypdoNaam] . "rn" ;
$reactie = htmlentities($_POST[eMail]);
$bericht = "Beste ".$naam.",

Er is een nieuw contactformulier ingevuld op de website.

De gegevens staan hieronder.

Servertijd: "
.$servertijd."

Hyper: "
.$_POST[hypdoNaam]."

E-mailadres: "
.$_POST[emailAdres]."

Ingevuld bericht: "
.$reactie."

IP: "
.$_SERVER[REMOTE_ADDR]."

Het ingevulde e-mailadres is tevens als reply-adres ingevoerd.

Je hoeft dus niet handmatig het adres aan te passen, je kan simpelweg op "Beantwoorden" klikken.

Groet,

*** - Automailer"
; // Het bericht dat wordt verzonden, wijzig de variabelen niet!
if(mail($email, $onderwerp, $bericht, $headers)){
echo "We hebben je bericht verzonden!";
}
else{
echo "Er is iets misgegegaan bij het verzenden van je bericht!
Je bericht is niet verzonden, probeer het later nog een keer!"
;
}
}
else{
echo "Je hebt geen bericht ingevoerd!";
}
}
else{
echo "Je bent vergeten je e-mailadres in te vullen!";
}
}
else{
echo "Je bent je Hypernaam vergeten in te vullen!";
}
}
else{
?>


}
?>

De header komt na de trim van de eMail / regel 21.
Sorry voor de eventuele spaghetti-code, op of aanmerkingen, kritiek mag, indien opbouwend.
Wie zou me kunnen helpen? Een vraag op stackoverflow hielp me niet echt verder.
Alvast bedankt thumbsup
Let op voor mail header injection

Kan je hier wat uitgebreider op ingaan?
Op een site, kan hem even niet vinden, stond dat het al sinds PHP 5.3 niet kan namelijk.

In je header staat een niet-gevalideerde $_POST variable. De gebruiker kan zelf kiezen wat die daar dus invult en kan je header aanpassen wat gevaarlijk kan zijn.
0
Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Vetrouw nooit maar dan ook nooit gegevens van client-side.
0
Berichten
7.307
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Is er iemand die kan helpen? Ik probeer te checken of een bepaalde email al in de database staat, op het internet staat alles op dezelfde manier alleen bij mij lukt het niet.

Code:

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

if ($_POST) {
if (isset ( $_POST [email] )) {
if (empty ( $_POST [email] )) {
echo "Je hebt niets ingevuld!";
} else {

$date = date ( d-m-Y );
$email = $_POST ["email"];
$query = mysql_query ( "SELECT * FROM mailadressen WHERE emailadres = $email)" );

if (mysqli_num_rows ( $query ) != 0) {
echo "Je bent al ingeschreven!";
}

else {
$mysql->query ( "INSERT IGNORE INTO mailadressen(emailadres, aanmelddatum) VALUES (" . $mysql->real_escape_string ( $_POST [email] ) . ",$date)" );
echo "Je email is toegevoegd!";
}
}
}
}

Error:

Codeblok (voorbeeld.php):

1

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:xamppphtdocsMailScriptindex.php on line 15

De error wordt altijd weergegeven, ook als hij hem gewoon toevoegd aan de database!
0
Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
1. Vergelijk $_SERVER[REQUEST_METHOD] met "POST" ipv te kijken of de variable $_POST bestaat.
2. Vergelijk een variable met een lege string i.p.v. de empty() functie te gebruiken.
3. Beveilig client-side inputs voordat je deze gebruikt in SQL querys => mysql(i)_real_escape_string()
4. Als je een datum met MySQL kan zetten, moet dit niet met PHP
5. De fout is dat je MySQL mixt met MySQLi en MySQLi classes emo
Probeer niet zelf te knoeien als je geen PHP kan, er komen zo mogelijke veiligheidsrisicos. Vraag aan een goede scripter of hij/zij het script kan beveiligen en maken of leer zelf grondig PHP.
0
Berichten
7.307
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Antonn schreef:
1. Vergelijk $_SERVER[REQUEST_METHOD] met "POST" ipv te kijken of de variable $_POST bestaat.
2. Vergelijk een variable met een lege string i.p.v. de empty() functie te gebruiken.
3. Beveilig client-side inputs voordat je deze gebruikt in SQL querys => mysql(i)_real_escape_string()
4. Als je een datum met MySQL kan zetten, moet dit niet met PHP
5. De fout is dat je MySQL mixt met MySQLi en MySQLi classes emo
Probeer niet zelf te knoeien als je geen PHP kan, er komen zo mogelijke veiligheidsrisicos. Vraag aan een goede scripter of hij/zij het script kan beveiligen en maken of leer zelf grondig PHP.
1. Al veranderd
2. Even nakijken
3. Even nakijken
4. Moest ik nog veranderen in NOW()
5. Ik zie maar 1 i die ik ben vergeten dat is op regel 9

En het is een klein scriptje dat misschien eerst troep is, maar voor ik het zal gebruiken zal ik het eerst laten nakijken voor enige veiligheidsrisicos

// Problem solved
0
Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

$.get("http://localhost/check.php", function(data) {
if(typeof(data.error) == "undefined") {
$( "button" ).click(function() {
chrome.browserAction.onClicked.addListener(function(activeTab) {
chrome.tabs.create({ url: data.href });
});
});

$( "div" ).html("De weektaak van week "+ data.week +" is beschikbaar!
" +
"
" +
"

Bekijk de roosterwijziging »

");
} else {
$( "div" ).html(data.error);
}
});

Waarom als ik op de button click word er geen nieuw tab geopend? Heb al gegoogled.

data.href word wel succesvol opgehaald!
0
Berichten
473
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dylanh schreef:
Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

$.get("http://localhost/check.php", function(data) {
if(typeof(data.error) == "undefined") {
$( "button" ).click(function() {
chrome.browserAction.onClicked.addListener(function(activeTab) {
chrome.tabs.create({ url: data.href });
});
});

$( "div" ).html("De weektaak van week "+ data.week +" is beschikbaar!
" +
"
" +
"

Bekijk de roosterwijziging »

");
} else {
$( "div" ).html(data.error);
}
});

Waarom als ik op de button click word er geen nieuw tab geopend? Heb al gegoogled.

data.href word wel succesvol opgehaald!

Volgens mij omdat je de listener plaatst voordat de button er is.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren