Variabele wordt niet gelezen??
Variabelen: $sessionkey en $ipadres woorden wel goed overgenomen.
Als ik $werkgebied echo voor of na de functie geeft ie hem wel.
Is dit een bug in in_array?
Als ik $werkgebied een fysiek een stringwaarde geef gaat dit overigens wel goed.
[script]
echo $werkgebied;
if(!in_array($sessionkey,$check,true)){
echo $werkgebied; // leest hij hier niet meer ????
$sql_insert="INSERT INTO prereg (id,sessionkey,ipadres,wgb,reg,afd) VALUES ('','".$sessionkey."','".$ipadres."','".$werkgebied."','".$reg."','".$afd."')";
$query=mysql_query($sql_insert);
}
[/script]
Bedankt!
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
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
<?php
# Je moet werkgebied wel een waarde gevenn
$werkgebied = '';
echo $werkgebied;
if( !in_array( $sessionkey, $check, TRUE ) )
{
echo $werkgebied;
$qry = "INSERT INTO
prereg
(
sessionkey,
ipadres,
wgb,
reg,
afd
)
VALUES
(
'".mysql_real_escape_string( $sessionkey )."',
'".$ipadres."',
'".$werkgebied."',
'".$reg."',
'".$afd."'
)";
if( $sql = mysql_query( $qry ) )
{
# Goed
}
else
{
# Fout
}
}
?>
# Je moet werkgebied wel een waarde gevenn
$werkgebied = '';
echo $werkgebied;
if( !in_array( $sessionkey, $check, TRUE ) )
{
echo $werkgebied;
$qry = "INSERT INTO
prereg
(
sessionkey,
ipadres,
wgb,
reg,
afd
)
VALUES
(
'".mysql_real_escape_string( $sessionkey )."',
'".$ipadres."',
'".$werkgebied."',
'".$reg."',
'".$afd."'
)";
if( $sql = mysql_query( $qry ) )
{
# Goed
}
else
{
# Fout
}
}
?>
Een aantal dingen verbeterd...
Je moet dus goede foutafhandeling inbouwen. Alle andere regels ook als regel 22 doen dus met mysql_real_escape_string. En af een toe een spatie mag ook hoor, zeer kut te lezen anders...
$werkgebied heeft een waarde. Dat heb ik getest met de echo regel. Die geeft hem prima weer. Alleen zo gauw ik hem binnen de functie til kent hij hem niet meer. Als ik vervolgens een andere waarde toe ken aan $werkgebied voor de functie, bijvoorbeeld:
$werkgebied = "test";
Dan zet hij hem keurig in m'n database en werkt het wel. Ik heb het geheel in een jumi applicatie gehangen wat met JSession uitbreekt uit het Joomla framework, hij maakt dan een nieuw scherm met mijn gegevens.
Dit werkt allemaal met strings, ook bij het wegschrijven naar de db.
Andere 2 variabelen pakt hij wel maar $werkgebied, $reg, $afd niet.
Hij kan ze wel echo-en vlak voor de in_array functie.
Ik haal ze binnen met een _GET via AJAX.
Bedankt voor de tips mbt de error check. Evenzo gaat het wegschrijven prima. Heb alleen de echo ook binnen de functie gehaalt om te zien of hij hem kent.
Even een vraagje, welke tags moet je in de text opnemen om de code goed weer te geven?
Marcel R op 02/11/2010 21:25:16:
Alleen zo gauw ik hem binnen de functie til kent hij hem niet meer.
Binnen welke functie?
Quote:
if(!in_array($sessionkey,$check,true)){
Wat zit er in $sessionkey en wat zit er in $check?
Als iemand me verteld hoe ik script knap kan posten hier... kan hier niets vinden. Misschien ook niet goed gezocht...
Gooi ik even het hele stuk code erop, kunnen jullie allemaal meekijken en hopelijk wat ik fout doe.
San The - is binnen de if en niet binnen een functie, foutje in m'n uitleg.
stuk code doe je door [.code][./code] (zonder .)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
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
60
61
62
63
64
65
66
67
<?php
error_reporting(E_ALL);
$session =& JFactory::getSession();
$sessionkey = $session -> get('key'); // 8 digit getal
$werkgebied = ucwords($_GET['wgb']);
$reg = stripslashes($_GET['regio']);
$afd = $_GET['afd'];
$inzetnaam = ucwords($_GET['naam']);
$inzetplaats = ucwords($_GET['plaats']);
$begindatum = $_GET['begin'];
$einddatum = $_GET['eind'];
$ipadres = $_SERVER['REMOTE_ADDR'];
$countcols = 5;
$sa = " > ";
$da = " >> ";
if(!empty($reg)){$regio = $sa.$reg;}
if(!empty($afd)){$afdeling = $da.$afd;}
include("dbconapp.php");
if(!isset($sessionkey)){
echo "Sessie verlopen of nog niet geactiveerd.";
}else{
$check=array(); // array van beschikbare sessionkeys
$sql_check="SELECT sessionkey FROM prereg";
$query_check=mysql_query($sql_check) or die(mysql_error());
while($checky=mysql_fetch_array($query_check)){
array_push($check,$checky['sessionkey']);
}
echo $werkgebied; // test printout om te zien of deze var zijn waarde behoud
if(!in_array($sessionkey,$check,true)){
echo $werkgebied; // leest hij hier niet meer ????
$sql_insert="INSERT INTO
prereg
(
id,
sessionkey,
ipadres,
wgb,
reg,
afd
)
VALUES
(
'',
'".$sessionkey."',
'".$ipadres."',
'".$werkgebied."',
'".$reg."',
'".$afd."'
)";
$query=mysql_query($sql_insert);
}
?>
error_reporting(E_ALL);
$session =& JFactory::getSession();
$sessionkey = $session -> get('key'); // 8 digit getal
$werkgebied = ucwords($_GET['wgb']);
$reg = stripslashes($_GET['regio']);
$afd = $_GET['afd'];
$inzetnaam = ucwords($_GET['naam']);
$inzetplaats = ucwords($_GET['plaats']);
$begindatum = $_GET['begin'];
$einddatum = $_GET['eind'];
$ipadres = $_SERVER['REMOTE_ADDR'];
$countcols = 5;
$sa = " > ";
$da = " >> ";
if(!empty($reg)){$regio = $sa.$reg;}
if(!empty($afd)){$afdeling = $da.$afd;}
include("dbconapp.php");
if(!isset($sessionkey)){
echo "Sessie verlopen of nog niet geactiveerd.";
}else{
$check=array(); // array van beschikbare sessionkeys
$sql_check="SELECT sessionkey FROM prereg";
$query_check=mysql_query($sql_check) or die(mysql_error());
while($checky=mysql_fetch_array($query_check)){
array_push($check,$checky['sessionkey']);
}
echo $werkgebied; // test printout om te zien of deze var zijn waarde behoud
if(!in_array($sessionkey,$check,true)){
echo $werkgebied; // leest hij hier niet meer ????
$sql_insert="INSERT INTO
prereg
(
id,
sessionkey,
ipadres,
wgb,
reg,
afd
)
VALUES
(
'',
'".$sessionkey."',
'".$ipadres."',
'".$werkgebied."',
'".$reg."',
'".$afd."'
)";
$query=mysql_query($sql_insert);
}
?>
Gewijzigd op 03/11/2010 19:12:36 door Marcel R
Haal die 'true' eens weg.
if(!in_array($sessionkey,$check)){
Toevoeging op 03/11/2010 19:17:12:
Denk ook aan sql-injection.
Het gekke is dat als ik dus $werkgebied (of 1 van de andere 2) een waarde geef die niet uit de eerste declaratie ($werkgebied = $_GETenz.) komt, dus bijvoorbeeld "test" dan gebruikt hij die waarde wel binnen de if regel en zet hem ook netjes in de db. Hij print echter wel een waarde dus er zit inhoud in de variabele. Mogelijk heeft het met het Joomla framework te maken.
Het is net of hij maar maximaal 2 strings meeneemt binnen de functie maar heb in de documentatie geen beperkingen gevonden over het aantal $'s binnen een if-else.
Ik weet dus niet meer waar ik het zoeken moet dus vandaar mijn verzoek hier. Bedankt iig.
Doe eens een vardump op die variabelen.
string(13) "Noord Holland" string(19) "Noord Holland Noord" string(7) "Alkmaar"
Afijn toch blijft ie hangen op de if regel....
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
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
<?php
if(in_array($sessionkey,$check,TRUE)){
$control=0;
}else{
$control=1;
}
if($control==1 && !empty($werkgebied)){
// echo $werkgebied;
$sql_insert="INSERT INTO
prereg
(
id,
sessionkey,
ipadres,
werkgebied,
regio,
afdeling
)
VALUES
(
'',
'".$sessionkey."',
'".$ipadres."',
'".$werkgebied."',
'".$reg."',
'".$afd."'
)";
$query=mysql_query($sql_insert);
}
?>
if(in_array($sessionkey,$check,TRUE)){
$control=0;
}else{
$control=1;
}
if($control==1 && !empty($werkgebied)){
// echo $werkgebied;
$sql_insert="INSERT INTO
prereg
(
id,
sessionkey,
ipadres,
werkgebied,
regio,
afdeling
)
VALUES
(
'',
'".$sessionkey."',
'".$ipadres."',
'".$werkgebied."',
'".$reg."',
'".$afd."'
)";
$query=mysql_query($sql_insert);
}
?>
Gewijzigd op 05/11/2010 22:10:17 door Marcel R
heb je nu wel gedacht aan sql injection?