abonnement Unibet Coolblue Bitvavo
  zaterdag 3 januari 2009 @ 17:31:36 #176
75592 GlowMouse
l'état, c'est moi
pi_64618123
quote:
Op zaterdag 3 januari 2009 02:05 schreef Roy_T het volgende:

[..]

Memcached anyone?
Moet je die wel hebben draaien en is er nog steeds één request die er lang over doet.
quote:
Op zaterdag 3 januari 2009 17:24 schreef cablegunmaster het volgende:

[ code verwijderd ]

hoe var dump ik dit?
Wat bedoel je?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_64618919
quote:
Op zaterdag 3 januari 2009 17:31 schreef GlowMouse het volgende:

[..]

Moet je die wel hebben draaien en is er nog steeds één request die er lang over doet.
[..]

Wat bedoel je?
ik krijg de variable niet goed van getal1 en getal 2
hij telt niet op als ik op ok druk. dus vraag ik me af hoe ik dit nu moet oplossen en vraag ik me ook af hoe ik een var dump van post variabele maak.

want vardump($post)werkt niet.
Redacted
  zaterdag 3 januari 2009 @ 18:08:12 #178
75592 GlowMouse
l'état, c'est moi
pi_64619180
De variabele heet dan ook niet $post of $_post maar $_POST. En de functie niet vardump maar var_dump.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_64620755
quote:
Op zaterdag 3 januari 2009 18:08 schreef GlowMouse het volgende:
De variabele heet dan ook niet $post of $_post maar $_POST. En de functie niet vardump maar var_dump.

hartelijk bedankt meteen ook wat fout was in de php code

hoofdletters
Redacted
pi_64623227
quote:
Op zaterdag 3 januari 2009 17:31 schreef GlowMouse het volgende:

Moet je die wel hebben draaien en is er nog steeds één request die er lang over doet.
Dat geldt voor iedere extensie natuurlijk. Wil je afbeeldingen resizen, dan zul je ook GD ofzo moeten hebben draaien. En wil je json_encode gebruiken in PHP < 5.2.3, dan zul je dat ook moeten installeren.

Je kunt de cache overigens prima vullen wanneer er een product wordt toegevoegd bijvoorbeeld, zodat er nooit iemand hoeft te wachten op een lange request. Ik heb verschillende apps gebouwd die met een cron eenmaal per dag kijken wat er nieuw is, dat in memcached opslaan en klaar.
  zaterdag 3 januari 2009 @ 20:25:05 #181
75592 GlowMouse
l'état, c'est moi
pi_64623759
quote:
Op zaterdag 3 januari 2009 20:12 schreef Roy_T het volgende:

[..]

Dat geldt voor iedere extensie natuurlijk. Wil je afbeeldingen resizen, dan zul je ook GD ofzo moeten hebben draaien. En wil je json_encode gebruiken in PHP < 5.2.3, dan zul je dat ook moeten installeren.
En wil je PHP gebruiken...Helaas krijg je bij weinig hosters de beschikking over memcached. Bij shared hosting ben ik het nog nooit tegengekomen, waarschijnlijk omdat er geen authenticatie is.
quote:
Je kunt de cache overigens prima vullen wanneer er een product wordt toegevoegd bijvoorbeeld, zodat er nooit iemand hoeft te wachten op een lange request. Ik heb verschillende apps gebouwd die met een cron eenmaal per dag kijken wat er nieuw is, dat in memcached opslaan en klaar.
Dat eerder cachen werd eerder al gesuggereerd als oplossing, alleen niet icm memcached. Memcached is hiervoor niet zo heel erg goed omdat het zomaar dingen weg kan mikken als het geheugen vol zit. En als je al MySQL hebt, waarom zou je dat niet gebruiken? Voor de performance hoef je het niet te laten.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_64640410
quote:
Op zaterdag 3 januari 2009 20:25 schreef GlowMouse het volgende:

En wil je PHP gebruiken...Helaas krijg je bij weinig hosters de beschikking over memcached. Bij shared hosting ben ik het nog nooit tegengekomen, waarschijnlijk omdat er geen authenticatie is.
Dat is waar. Ik werk nooit binnen shared hosting omgevingen, dus daar had ik niet aan gedacht
quote:
Dat eerder cachen werd eerder al gesuggereerd als oplossing, alleen niet icm memcached. Memcached is hiervoor niet zo heel erg goed omdat het zomaar dingen weg kan mikken als het geheugen vol zit. En als je al MySQL hebt, waarom zou je dat niet gebruiken? Voor de performance hoef je het niet te laten.
Dat ligt helemaal aan de architectuur uiteraard. In het artikel waar je naar verwijst hebben ze het over een cluster van databases waar de data sharded wordt opgeslagen. Daar hebben de meesten uiteraard ook geen mogelijkheid toe.

Memcached kan inderdaad vol raken en de oudste data weggooien, maar daar ben je zelf bij natuurlijk. De app waar ik het over had moet iedere dag een paar MB aan data opslaan (en gedurende die dag gebruiken), terwijl er 1 GB aan ruimte gereserveerd is voor memcached. Dan heb je dat probleem nooit.

Wat mij betreft dus allebei prima oplossingen, afhankelijk van de architectuur. Maar als je geen memcached hebt en op een shared host draait, dan kun je eigenlijk niets anders dan je database gebruiken (of file caching, maar dat zou niet mijn voorkeur hebben)
pi_64641420
Ik ben op het moment bezig met een login scriptje, maar raar genoeg werkt deze niet..
Ik heb in mijn database een kolom MEMBERS met de velden username en wachtwoord.
Raar genoeg krijg ik aldoor "U heeft geen goede combinatie van emailadres en wachtwoord gebruikt." te zien terwijl de username en password die ik invoer in mijn inlogscherm zeker weten correct zijn.
Ziet iemand de fout die ik maak??
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
<?php
error_reporting
(E_ALL);
mysql_connect("localhost""root""")or die("mysql_error");
mysql_select_db("opdracht1")or die("mysql_error");

if(!empty(
$_POST))
    { 
        
// username and password sent from form
        
$myusername=$_POST['username'];
        
$mypassword=$_POST['wachtwoord'];

        
// To protect MySQL injection 
        
$myusername stripslashes($myusername);
        
$mypassword stripslashes($mypassword);
        
$myusername mysql_real_escape_string($myusername);
        
$mypassword mysql_real_escape_string($mypassword);
        
$query "SELECT * FROM members WHERE username='$myusername' and password='$mypassword'"

        
$result mysql_query($query); 

        if(
$result == 1)
        { 
        
$user $_POST["username"]; 
        
$wachtwoord $_POST["wachtwoord"]; 
        
$_SESSION['username'] = $user
        
$_SESSION['wachtwoord'] = $wachtwoord

        
header("Location: beveiligd.php"); 
        } 
        
        else 
        { 
        echo 
"U heeft geen goede combinatie van emailadres en wachtwoord gebruikt."
        }          
    }
else
{
    echo 
"U heeft de pagina verkeerd opgeroepen.";
}
 
?>
Bodybuilding #1
Hardlopen #2
  zondag 4 januari 2009 @ 12:39:41 #184
75592 GlowMouse
l'état, c'est moi
pi_64641651
MEMBERS is een tabel, geen kolom.
Om die stripslashes zou ik nog een check doen of magic_quotes_gpc wel aan staat.
Wat denk je dat $result voorstelt, dat je hem met 1 vergelijkt?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_64641759
$result ==1 is om te controleren of er 1 rij uit de query komt, wat betekent dat de username bestaat in de database, in geval van 0 rijen krijg je de melding dat er geen goede combinatie is.
Meer dan 1 rij kan ook niet uit de query komen omdat de username uniek is.
Bodybuilding #1
Hardlopen #2
  zondag 4 januari 2009 @ 12:46:53 #186
75592 GlowMouse
l'état, c'est moi
pi_64641862
Dus $result stelt het aantal rijen in het resultaat voor zeg je? Klopt niet helaas. $result is bij jou wat mysql_query teruggeeft, en dat is een resource:
quote:
Return Values

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_64642212
En hoe kan ik dan ervoor zorgen dat de resultaten wel in een rij komen te staan? Met mysql_fetch_row?
Bodybuilding #1
Hardlopen #2
  zondag 4 januari 2009 @ 13:01:48 #188
75592 GlowMouse
l'état, c'est moi
pi_64642261
quote:
Op zondag 4 januari 2009 12:59 schreef Kerol het volgende:
En hoe kan ik dan ervoor zorgen dat de resultaten wel in een rij komen te staan? Met mysql_fetch_row?
Je kunt die resource weer aan een andere functie voeren, zoals deze.
Waarom vraag je eigenlijk zoveel gegevens op uit je database terwijl je alleen maar wilt weten hoeveel rijen er voldoen aan jouw criterium?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_64642469
Wat bedoel je met zoveel gegevens? Ik vraag nu alleen aan de database of de username en password zich bevinden in de database.
Verder niets toch? Of is dat niet wat je bedoelt..
Bodybuilding #1
Hardlopen #2
  zondag 4 januari 2009 @ 13:12:14 #190
75592 GlowMouse
l'état, c'est moi
pi_64642588
quote:
Op zondag 4 januari 2009 13:08 schreef Kerol het volgende:
Wat bedoel je met zoveel gegevens? Ik vraag nu alleen aan de database of de username en password zich bevinden in de database.
Verder niets toch? Of is dat niet wat je bedoelt..
Jij vraagt alle kolommen op uit de tabel members (via SELECT * ), dus in ieder geval krijg je een gebruikersnaam en wachtwoord terug die je toch al kent. Heb je niks aan dus.

[ Bericht 5% gewijzigd door GlowMouse op 04-01-2009 13:17:55 ]
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_64642654
Hij controleert nu toch juist of die username en wachtwoord in de database staan zodat de gebruiker kan inloggen?
Bodybuilding #1
Hardlopen #2
  zondag 4 januari 2009 @ 13:15:27 #192
75592 GlowMouse
l'état, c'est moi
pi_64642698
quote:
Op zondag 4 januari 2009 13:14 schreef Kerol het volgende:
Hij controleert nu toch juist of die username en wachtwoord in de database staan zodat de gebruiker kan inloggen?
Dat klopt, maar je vraagt veel meer informatie op dan je nodig hebt.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_64643478
-edit- o wacht
Bodybuilding #1
Hardlopen #2
pi_64643560
Dus eigenlijk moet ik gewoon een count gebruiken?
1
2
3
<?php
"SELECT COUNT(*) FROM members WHERE username='$myusername' and password='$mypassword'"
?>
Bodybuilding #1
Hardlopen #2
  zondag 4 januari 2009 @ 13:46:06 #195
75592 GlowMouse
l'état, c'est moi
pi_64643658
Dat is hier het beste ja Niet dat je het verschil hier merkt, maar het is goed om van begin af aan te bedenken wat je nodig hebt en niet meer dan dat op te vragen. Je kunt nu alleen niet meer mysql_num_rows gebruiken omdat je nu altijd een rij terugkrijgt.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_64644112
Ik krijg nog steeds aldoor de melding: 'U heeft geen goede combinatie van emailadres en wachtwoord gebruikt. '

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
<?php
error_reporting
(E_ALL);
mysql_connect("localhost""root""")or die("mysql_error");
mysql_select_db("opdracht1")or die("mysql_error");

if(!empty(
$_POST))
    { 
        
// username and password sent from form
        
$myusername=$_POST['username'];
        
$mypassword=$_POST['wachtwoord'];

        
// To protect MySQL injection (more detail about MySQL injection)
        
$myusername stripslashes($myusername);
        
$mypassword stripslashes($mypassword);
        
$myusername mysql_real_escape_string($myusername);
        
$mypassword mysql_real_escape_string($mypassword);
        
$query "SELECT COUNT(*) FROM members WHERE username='$myusername' and password='$mypassword'"

        
$result mysql_query($query); 

        if(
$result == 1)
        { 
        
$user $_POST["username"]; 
        
$wachtwoord $_POST["wachtwoord"]; 
        
$_SESSION['username'] = $user
        
$_SESSION['wachtwoord'] = $wachtwoord

        
header("Location: beveiligd.php"); 
        } 
        
        else 
        { 
        echo 
"U heeft geen goede combinatie van emailadres en wachtwoord gebruikt."
        }          
    }
else
{
    echo 
"U heeft de pagina verkeerd opgeroepen.";
}
 
?>


Wat doe ik nu nog verkeerd?
Bodybuilding #1
Hardlopen #2
pi_64644150
Vraagje:

Ik heb deze query & code:

1
2
3
4
5
6
7
<?php
foreach ($_SESSION['user_shop']['items']  AS $item_ID => $key){
   if (
is_numeric($item_ID)){
      
$extra_Q .= $item_ID.',';
   }
}
?>


1SELECT * FROM content_items items WHERE   items.item_ID IN (".$extra_Q." 0)


- Er wordt niet gesorteerd op de volgorde van $extra_Q.

Ziet iemand wat er 'fout' is ?

[ Bericht 4% gewijzigd door jeroen2497 op 04-01-2009 14:07:40 ]
  zondag 4 januari 2009 @ 14:07:14 #198
75592 GlowMouse
l'état, c'est moi
pi_64644381
quote:
Op zondag 4 januari 2009 14:00 schreef jeroen2497 het volgende:
- Er wordt niet gesorteerd op de volgorde van $extra_Q.
Ik zie geen ORDER BY. En zonder ORDER BY kun je de rijen in elke willekeurige volgorde terugkrijgen. De volgorde waarin je id's in een WHERE opgeeft wordt niet gebruikt voor de sortering.
quote:
Op zondag 4 januari 2009 13:59 schreef Kerol het volgende:
Ik krijg nog steeds aldoor de melding: 'U heeft geen goede combinatie van emailadres en wachtwoord gebruikt. '
[ code verwijderd ]

Wat doe ik nu nog verkeerd?
In $result staat nog steeds een resource, en niet de waarde voor count(*).
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_64644417
quote:
Op zondag 4 januari 2009 14:07 schreef GlowMouse het volgende:

[..]

Ik zie geen ORDER BY.
[..]

In $result staat nog steeds een resource, en niet de waarde voor count(*).
Maar normaalgesproken is het toch zo dat als ik een serie ID's opgeef, hij ze in de opgegeven volgorde laat zien? Want hier kan ik volgens mij geen order by voor gebruiken?
pi_64644487
quote:
Op zondag 4 januari 2009 13:59 schreef Kerol het volgende:
Ik krijg nog steeds aldoor de melding: 'U heeft geen goede combinatie van emailadres en wachtwoord gebruikt. '
[ code verwijderd ]

Wat doe ik nu nog verkeerd?
mysql_query geeft niet het resultaat van count terug, maar een resultset. Je moet de eerste row nog fetchen met $row = mysql_fetch_row($result) en dan $row[0] == 1 checken.

Overigens twijfel ik of count(*) wel het snelste is op mysql vlak

Mogelijk is onderstaande query nog sneller, met als bijkomende voordeel dat je de member id in je session kan gooien.
SELECT id FROM members WHERE username='$myusername' and password='$mypassword' LIMIT 1

$result = mysql_query($query);

$row = mysql_fetch_assoc($result);
if($row) {
//valide record, met $row['id'] = member id
}
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')