Warning: sqlsrv_fetch_object() expects parameter 1 to be resource, boolean given in
Ik ben bezig om een website te maken voor multi device gebruik.
Dit is een website in PHP gehost op IIS7.
De data wordt uit een MS SQL database gehaald.
Nu is de website op mijn laptop en tablet goed te zien.
Ook gaat het op een android toestel prima.
Maar op mijn Windows Phone 8 werkt het niet.
Dan krijg ik deze fout:
Warning: sqlsrv_fetch_object() expects parameter 1 to be resource, boolean given in
Blijkbaar gaat Windows PHone 8 er anders mee om dan android of een tablet/laptop.
Heeft er iemand een idee?
het klinkt als missende foutafhandeling. Kan je misschien wat relevante code tonen?
Ik heb zelf ook windows phone toestellen, kan je me de website geven? dan kijk ik even :)
Dit is het stukje script:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$serverName = "{naam}";
$connectionInfo = array( "Database"=>"{databasename}", "UID"=>"{gebruikersnaam}", "PWD"=>"{wachtwoord}");
$db = sqlsrv_connect( $serverName, $connectionInfo);
$qry = sqlsrv_query($db, "SELECT Email, GebruikersNaam, Naam, Telefoon, KantoorId, TelefoonMobiel FROM gebruikers WHERE GebruikersNaam = '".$_SESSION['username']."'");
$ech = sqlsrv_fetch_object($qry);
?>
$serverName = "{naam}";
$connectionInfo = array( "Database"=>"{databasename}", "UID"=>"{gebruikersnaam}", "PWD"=>"{wachtwoord}");
$db = sqlsrv_connect( $serverName, $connectionInfo);
$qry = sqlsrv_query($db, "SELECT Email, GebruikersNaam, Naam, Telefoon, KantoorId, TelefoonMobiel FROM gebruikers WHERE GebruikersNaam = '".$_SESSION['username']."'");
$ech = sqlsrv_fetch_object($qry);
?>
als ik var_dump($ech) doe, krijg ik op mijn laptop netjes deze gegevens:
object(stdClass)#2 (6) { ["Email"]=> string(18) "{waarde}" ["GebruikersNaam"]=> string(7) "{waarde}" ["Naam"]=> string(12) "{waarde}" ["Telefoon"]=> string(10) "{waarde}" ["KantoorId"]=> int(1) ["TelefoonMobiel"]=> string(10) "{waarde}" }
Waarbij {waarde} uiteraard netjes ingevuld is.
Open ik dezelfde pagina op mijn windows phone, krijg ik bool(false)
Nogmaals, op mijn tablet werkt dit prima, maar op windows phone 8 niet.
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Alvast bedankt!
Alvast bedankt!
Gewijzigd op 26/05/2014 13:41:50 door - Ariën -
Niet direct in elk geval. De user agent, en mogelijk andere informatie, van de Windows Phone zal anders zijn. Ik kan me zomaar voorstellen dat deze in de database op wordt geslagen. Ik kan me ook voorstellen dat de query die daarvoor gebruikt wordt gevoelig is voor SQL injectie.
Als je wilt dat we je hebben hebben we méér code nodig. Vooral de code vóór de fout.
Edit: bah, had moeten refreshen.
Gewijzigd op 26/05/2014 13:40:29 door Dos Moonen
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<?PHP
date_default_timezone_set('Europe/Amsterdam');
error_reporting(E_ALL); ini_set('display_errors', '1');
session_start();
include 'incl/function.php';
include 'incl/db_supportware.php';
if(isset($_GET['set'])&&($_GET['set']=="logout"))
{
session_destroy();
}
if(!isset($_GET['page']))
{
$page = 'leeg';
}
else
{
$page = $_GET['page'];
}
echo '<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
<meta name="author" content="RElshof" />
<meta name="viewport" content="width=device-width initial-scale=1.0 maximum-scale=1.0 user-scalable=yes" />
<title>Helpdesk Zorggroep Sirjon</title>
<link type="text/css" rel="stylesheet" href="src/css/demo.css" />
<link type="text/css" rel="stylesheet" href="src/css/jquery.mmenu.css" />
<link type="text/css" rel="stylesheet" href="src/css/extensions/jquery.mmenu.widescreen.css" media="all and (min-width: 900px)" />
<link type="text/css" rel="stylesheet" href="src/css/extensions/jquery.mmenu.themes.css" media="all and (min-width: 900px)" />
<style type="text/css">
@media all and (min-width: 900px) {
html, body {
height: 100%;
}
#menu {
background: #eee;
}
#page {
border-left: 1px solid #ccc;
min-height: 100%;
}
/* hide open-button */
a[href="#menu"]
{
display: none !important;
}
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="src/js/jquery.mmenu.js"></script>
<script type="text/javascript" src="tinymce/tinymce.min.js"></script>
<script type="text/javascript">
$(function() {
$(\'nav#menu\').mmenu({
classes: \'mm-light\'
});
});
</script>
</head>
<body>
<div id="page">
<div id="header">
<a href="#menu"></a>
'.headertitle($page).'
</div>
<div id="content">';
$username = adselector('username', $_SESSION['username']);
$username = str_replace(' ', '', $username);
$query = "SELECT TOP (1) Categorie FROM zaken WHERE ZaakGebruiker = '".$username."' ORDER BY id DESC";
$qryU = sqlsrv_query($db, $query);
$echU = sqlsrv_fetch_object($qryU);
$lastCat = $echU->Categorie;
$qryU = sqlsrv_query($db, "SELECT Email, GebruikersNaam, Naam, Telefoon, KantoorId, TelefoonMobiel FROM gebruikers WHERE GebruikersNaam = '".$username."'");
$echU = sqlsrv_fetch_object($qryU);
$TelefoonMobiel = $echU->TelefoonMobiel;
echo tinymce('all').'<form action="'.$_SERVER['PHP_SELF'].'?page=addticket" method="post">
<table width="100%">
<tr>
<td class="lookofbutton" width="25%"><b>Onderwerp</b>:</td>
<td width="75%"><input type="text" name="Onderwerp" style="width:100%;"></td>
</tr>
<tr>
<td class="lookofbutton"><b>Telefoon</b>:</td>
<td><input type="text" name="Telefoon" style="width:100%;" value="'.$TelefoonMobiel.'"></td>
</tr>
<tr>
<td class="lookofbutton"><b>Categorie</b>:</td>
<td><select name="categorie" style="width:100%;" >
<option value="" /> -- Maak je keuze --</option>';
$qry = sqlsrv_query($db, "SELECT id, Naam, Omschrijving FROM categorie WHERE (Publiekelijk = 1) ORDER BY Naam");
while($ech = sqlsrv_fetch_object($qry))
{
if(stristr($ech->Naam, '*') === FALSE)
{
echo '<option value="'.$ech->id.'"'; if($lastCat==$ech->id) { echo 'selected'; } echo '>'.$ech->Naam.' ('.$ech->Omschrijving.')</option>';
}
}
echo '</select></td>
</tr>
<tr>
<td class="lookofbutton"><b>Lokatie</b>:</td>
<td><select name="lokatie" style="width:100%;" >
<option value="" /> -- Maak je keuze --</option>';
$qry = sqlsrv_query($db, "SELECT id, Naam FROM kantoren ORDER BY Naam");
while($ech = sqlsrv_fetch_object($qry))
{
if(stristr($ech->Naam, '*') === FALSE)
{
echo '<option value="'.$ech->id.'"'; if($echU->KantoorId==$ech->id) { echo 'selected'; } echo '>'.$ech->Naam.'</option>';
}
}
echo '</select></td>
</tr>
<tr>
<td colspan="2"><textarea name="omschrijving">'.$_SESSION['omschrijving'].'</textarea></td></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="login" style="width:100%;" value="Verzenden"></td>
</tr>
</table>
</form>';
echo '</div>
<nav id="menu">
<ul>
<li '; if(isset($_GET['login'])&&($_GET['login']=="")) { echo 'class="Selected"'; } echo '><a href="'.$_SERVER['PHP_SELF'].'">Home</a></li>
<li '; if(isset($_GET['login'])&&($_GET['login']=="addticket")) { echo 'class="Selected"'; } echo '><a href="'.$_SERVER['PHP_SELF'].'?page=addticket">Support aanvragen</a>
<li '; if(isset($_GET['login'])&&($_GET['login']=="mysupport")) { echo 'class="Selected"'; } echo '><a href="'.$_SERVER['PHP_SELF'].'?page=mysupport">Support status</a></li>
<li '; if(isset($_GET['login'])&&($_GET['login']=="storingen")) { echo 'class="Selected"'; } echo '><a href="'.$_SERVER['PHP_SELF'].'?page=storingen">Storingen overzicht</a></li>
<li '; if(isset($_GET['login'])&&($_GET['login']=="onderhoud")) { echo 'class="Selected"'; } echo '><a href="'.$_SERVER['PHP_SELF'].'?page=onderhoud">Onderhoudoverzicht</a></li>';
if($_SESSION['login']==true)
{
$ou = adselector('ou', $_SESSION['username']);
if(strrpos($ou, "I&A")==true)
{
echo '<li '; if(isset($_GET['login'])&&($_GET['login']=="Supportdesk")) { echo 'class="Selected"'; } echo '><a href="'.$_SERVER['PHP_SELF'].'?page=Supportdesk">Supportdesk</a></li>';
}
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?set=logout">Uitloggen</a></li>';
}
else
{
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?page=inloggen">Inloggen</a></li>';
}
echo '</ul>
</nav>
</div>
<script type="text/javascript" language="javascript" src="src/js/footer.js"></script>
</body>
</html>';
date_default_timezone_set('Europe/Amsterdam');
error_reporting(E_ALL); ini_set('display_errors', '1');
session_start();
include 'incl/function.php';
include 'incl/db_supportware.php';
if(isset($_GET['set'])&&($_GET['set']=="logout"))
{
session_destroy();
}
if(!isset($_GET['page']))
{
$page = 'leeg';
}
else
{
$page = $_GET['page'];
}
echo '<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
<meta name="author" content="RElshof" />
<meta name="viewport" content="width=device-width initial-scale=1.0 maximum-scale=1.0 user-scalable=yes" />
<title>Helpdesk Zorggroep Sirjon</title>
<link type="text/css" rel="stylesheet" href="src/css/demo.css" />
<link type="text/css" rel="stylesheet" href="src/css/jquery.mmenu.css" />
<link type="text/css" rel="stylesheet" href="src/css/extensions/jquery.mmenu.widescreen.css" media="all and (min-width: 900px)" />
<link type="text/css" rel="stylesheet" href="src/css/extensions/jquery.mmenu.themes.css" media="all and (min-width: 900px)" />
<style type="text/css">
@media all and (min-width: 900px) {
html, body {
height: 100%;
}
#menu {
background: #eee;
}
#page {
border-left: 1px solid #ccc;
min-height: 100%;
}
/* hide open-button */
a[href="#menu"]
{
display: none !important;
}
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="src/js/jquery.mmenu.js"></script>
<script type="text/javascript" src="tinymce/tinymce.min.js"></script>
<script type="text/javascript">
$(function() {
$(\'nav#menu\').mmenu({
classes: \'mm-light\'
});
});
</script>
</head>
<body>
<div id="page">
<div id="header">
<a href="#menu"></a>
'.headertitle($page).'
</div>
<div id="content">';
$username = adselector('username', $_SESSION['username']);
$username = str_replace(' ', '', $username);
$query = "SELECT TOP (1) Categorie FROM zaken WHERE ZaakGebruiker = '".$username."' ORDER BY id DESC";
$qryU = sqlsrv_query($db, $query);
$echU = sqlsrv_fetch_object($qryU);
$lastCat = $echU->Categorie;
$qryU = sqlsrv_query($db, "SELECT Email, GebruikersNaam, Naam, Telefoon, KantoorId, TelefoonMobiel FROM gebruikers WHERE GebruikersNaam = '".$username."'");
$echU = sqlsrv_fetch_object($qryU);
$TelefoonMobiel = $echU->TelefoonMobiel;
echo tinymce('all').'<form action="'.$_SERVER['PHP_SELF'].'?page=addticket" method="post">
<table width="100%">
<tr>
<td class="lookofbutton" width="25%"><b>Onderwerp</b>:</td>
<td width="75%"><input type="text" name="Onderwerp" style="width:100%;"></td>
</tr>
<tr>
<td class="lookofbutton"><b>Telefoon</b>:</td>
<td><input type="text" name="Telefoon" style="width:100%;" value="'.$TelefoonMobiel.'"></td>
</tr>
<tr>
<td class="lookofbutton"><b>Categorie</b>:</td>
<td><select name="categorie" style="width:100%;" >
<option value="" /> -- Maak je keuze --</option>';
$qry = sqlsrv_query($db, "SELECT id, Naam, Omschrijving FROM categorie WHERE (Publiekelijk = 1) ORDER BY Naam");
while($ech = sqlsrv_fetch_object($qry))
{
if(stristr($ech->Naam, '*') === FALSE)
{
echo '<option value="'.$ech->id.'"'; if($lastCat==$ech->id) { echo 'selected'; } echo '>'.$ech->Naam.' ('.$ech->Omschrijving.')</option>';
}
}
echo '</select></td>
</tr>
<tr>
<td class="lookofbutton"><b>Lokatie</b>:</td>
<td><select name="lokatie" style="width:100%;" >
<option value="" /> -- Maak je keuze --</option>';
$qry = sqlsrv_query($db, "SELECT id, Naam FROM kantoren ORDER BY Naam");
while($ech = sqlsrv_fetch_object($qry))
{
if(stristr($ech->Naam, '*') === FALSE)
{
echo '<option value="'.$ech->id.'"'; if($echU->KantoorId==$ech->id) { echo 'selected'; } echo '>'.$ech->Naam.'</option>';
}
}
echo '</select></td>
</tr>
<tr>
<td colspan="2"><textarea name="omschrijving">'.$_SESSION['omschrijving'].'</textarea></td></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="login" style="width:100%;" value="Verzenden"></td>
</tr>
</table>
</form>';
echo '</div>
<nav id="menu">
<ul>
<li '; if(isset($_GET['login'])&&($_GET['login']=="")) { echo 'class="Selected"'; } echo '><a href="'.$_SERVER['PHP_SELF'].'">Home</a></li>
<li '; if(isset($_GET['login'])&&($_GET['login']=="addticket")) { echo 'class="Selected"'; } echo '><a href="'.$_SERVER['PHP_SELF'].'?page=addticket">Support aanvragen</a>
<li '; if(isset($_GET['login'])&&($_GET['login']=="mysupport")) { echo 'class="Selected"'; } echo '><a href="'.$_SERVER['PHP_SELF'].'?page=mysupport">Support status</a></li>
<li '; if(isset($_GET['login'])&&($_GET['login']=="storingen")) { echo 'class="Selected"'; } echo '><a href="'.$_SERVER['PHP_SELF'].'?page=storingen">Storingen overzicht</a></li>
<li '; if(isset($_GET['login'])&&($_GET['login']=="onderhoud")) { echo 'class="Selected"'; } echo '><a href="'.$_SERVER['PHP_SELF'].'?page=onderhoud">Onderhoudoverzicht</a></li>';
if($_SESSION['login']==true)
{
$ou = adselector('ou', $_SESSION['username']);
if(strrpos($ou, "I&A")==true)
{
echo '<li '; if(isset($_GET['login'])&&($_GET['login']=="Supportdesk")) { echo 'class="Selected"'; } echo '><a href="'.$_SERVER['PHP_SELF'].'?page=Supportdesk">Supportdesk</a></li>';
}
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?set=logout">Uitloggen</a></li>';
}
else
{
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?page=inloggen">Inloggen</a></li>';
}
echo '</ul>
</nav>
</div>
<script type="text/javascript" language="javascript" src="src/js/footer.js"></script>
</body>
</html>';
Code (php)
1
2
3
2
3
Return Values
Returns an object on success, NULL if there are no more rows to return, and FALSE if an error occurs or if the specified class does not exist.
Returns an object on success, NULL if there are no more rows to return, and FALSE if an error occurs or if the specified class does not exist.
Ik zie deze functie vier keer in je code staan en vier keer zonder fout-afhandeling.
Voorbeeldje:
Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -14
Code (php)
1
2
3
4
2
3
4
=> -14 [2] => An invalid parameter was passed to sqlsrv_fetch_object. [message] => An invalid parameter was passed to sqlsrv_fetch_object. ) )
Wat ik niet snap is, waarom het op de tablet/laptop wel werkt en op windows phone niet.
De code veranderd niet. Roep de pagina op dezelfde wijze aan.
Wat ik niet snap is, waarom het op de tablet/laptop wel werkt en op windows phone niet.
De code veranderd niet. Roep de pagina op dezelfde wijze aan.
Toevoeging op 26/05/2014 14:13:07:
Het betekent dat de query niet juist is. ik vermoed dat $username leeg is op regel 84. er gaat iets niet goed met je sessions.
Was eigenlijk nog te veel bezig met de design. En ja, dat soort dingen hoor je gelijk te doen. Ik weet het.
Iemand nog een idee? Ik zal nog eens wat andere telefoons proberen van collega's. Even kijken of het nog meer voorkomt.
Toevoeging op 26/05/2014 14:15:51:
Als ik de query echo, dan is de gebruikersnaam netjes ingevuld.
Dat is het vreemde ervan. Dat had ik gelijk al gecheckt.
Het lijkt vreemd inderdaad maar ik geloof er heilig in dat er een logische verklaring voor moet zijn. Als eerste is het belangrijk op welke regel het fout gaat want ik kan dat nu nog niet met zekerheid zeggen omdat er vier regels zijn met bovengenoemde functienaam. Ik zou je dus toch willen vragen die foutafhandeling in te bouwen zodat we straks weten waar we moeten zoeken. Vervolgens wil ik die query die je echo't dan wel eens zien.
$query = "SELECT TOP (1) Categorie FROM zaken WHERE ZaakGebruiker = '".$username."' ORDER BY id DESC";
$qryU = sqlsrv_query($db, $query);
$echU = sqlsrv_fetch_object($qryU);
En dit is de query:
SELECT TOP (1) Categorie FROM zaken WHERE ZaakGebruiker = 'relshof' ORDER BY id DESC
Het punt is als ik de foutafhandeling van deze query even uitschakel door // er voor te zetten, dan gaat het op de volgende query fout:
$query = "SELECT Email, GebruikersNaam, Naam, Telefoon, KantoorId, TelefoonMobiel FROM gebruikers WHERE GebruikersNaam = '".$username."'";
$qryU = sqlsrv_query($db, $query);
$echU = sqlsrv_fetch_object($qryU);
de echo van $query: SELECT Email, GebruikersNaam, Naam, Telefoon, KantoorId, TelefoonMobiel FROM gebruikers WHERE GebruikersNaam = 'relshof'
Quote:
Open ik dezelfde pagina op mijn windows phone, krijg ik bool(false)
php.net/manual/en/function.sqlsrv-query.php:
Quote:
Return Values ¶
Returns a statement resource on success and FALSE if an error occurred.
Returns a statement resource on success and FALSE if an error occurred.
php.net/manual/en/function.sqlsrv-errors.php:
Quote:
sqlsrv_errors — Returns error and warning information about the last SQLSRV operation performed
De door jou gegeven error:
Quote:
An invalid parameter was passed to sqlsrv_fetch_object.
Bij sqlsrv_query() gaat het al fout, dat weten we omdat deze FALSE returned. Dus we hebben niets aan de meest recente foutmelding na het uitvoeren van een andere sqlsrv_* functie.
Gebruik sqlsrv_errors() dus a.u.b. op het juiste moment zodat je ons relevante informatie kunt geven.
PS. Sorry als ik wat hard over kom, maar het is de bedoeling dat wij met jou meedenken, niet dat jij besluit ons al het denken te laten doen en alleen instructies opvolgt. Als je nog niet bekend bent met de PHP documentatie, ga dan de pagina's van functies lezen die je al kent. Zo leer je hoe de pagina's gestructureerd zijn om zo snel relevante informatie te kunnen vinden.
Gewijzigd op 26/05/2014 15:18:30 door Dos Moonen
Als ik de fout code opvraag van die eerste query krijg ik deze:
ERROR: Er is een fout ontstaan. ($qry1 )
Array ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 105
Code (php)
1
=> 105 [2] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Unclosed quotation mark after the character string 'relshof'. [message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Unclosed quotation mark after the character string 'relshof'. ) [1] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 102 => 102 [2] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near 'relshof'. [message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near 'relshof'. ) )
echo de query nu nog eens en je zult zien dat er ergens een ' of een " te veel staat.
Dat zit dan hoogst waarschijnlijk in een record in de database opgeslagen.
Je hebt bij het opslaan van de data zeer waarschijnlijk niet ge-escaped.
Zeer onwaarschijnlijk als de query geen gegevens uit de database gebruikt ;-)
Lijkt er meer op dat ergens in de $_SESSION['username'] iets vreemds meekomt wat je bij de echo van de query niet ziet
Wat doet die functie?
In dit geval de username.
Gebruik deze functie meer om alle andere gegevens te krijgen zoals displayname e.d.
Hoe word een Session gemaakt. Ik bedoel, het php script vult de sessie. Op een laptop werkt dit goed, maar op windows phone niet. Doet de browser/os ook nog wat met Sessions?
Zo ja, hoe kan ik de inhoud controleren? Want blijkbaar zit het daar dus fout. Maar hoe kan ik bepalen?
Toevoeging op 28/05/2014 14:47:49:
Ik denk dat ik weet wat er aan de hand is. De oplossing helaas alleen nog niet.
Als ik var_dump($_SESSION) doe krijg ik dit op de laptop te zien:
array(3) {
["login"]=>
bool(true)
["username"]=>
string(7) "relshof"
["ismobile"]=>
bool(false)
}
Echter op mijn windows phone het volgende:"
array(3) {
["login"]=>
bool(true)
["username"]=>
string(11) "relshof"
["ismobile"]=>
bool(true)
}
oftewel, de string is op mijn mobiel 4 tekens langer dan op de laptop, terwijl dit niet te zien is.
Hoe kan ik dit oplossen?
Probeer trim() eens.
Als gebruikersnamen alleen uit (bijvoorbeeld) kleine letters mogen bestaan dan controleer je of dit het geval is tijden het registreren en het inloggen vóór dat je de gebruiker ook echt probeert te registreren/inloggen.
Als dat niet het geval is geef je een vriendelijke foutmelding die duidelijk maakt dat er tekens in zitten die er niet in mogen zitten. Het liefst die je dit dan ook nog eens in PHP, de database als deze dit toe laat, en in javascript zodat gebruikers niet eens op inloggen hoeven te klikken om te weten dat er iets fout is.
Verder stel ik voor dat je eens iets op zoekt over SQL-Injection. Een mooi begin is http://security.stackexchange.com/questions/25684/how-can-i-explain-sql-injection-without-technical-jargon