abonnement Unibet Coolblue Bitvavo
pi_60280182
Ja, je moet wat, als je je menustructuur uit een database wilt halen en wilt laten uittekenen
pi_60284284
quote:
Op dinsdag 22 juli 2008 22:03 schreef LeeHarveyOswald het volgende:
Ja, je moet wat, als je je menustructuur uit een database wilt halen en wilt laten uittekenen :D
Je hebt nu 2x praktisch dezelfde query staan. Daar kan je makkelijk 1 functie van maken die een array met menu-item data geeft. Dat maakt het een stuk leesbaarder:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$counter = 0;
$mainMenuItems = readMenu(0);
foreach ($mainMenuItems as $item)
{
   ++$counter;
   printf('<dl>...</dl>', 
      $counter,
      htmlspecialchars($item['Link']),
      htmlspecialchars($item['Text']),
      ...);

   $subMenuItems = readMenu($item['ID']);
   foreach ($subMenuItems as $subItem)
   {
      printf('<li>...</li>', 
         htmlspecialchars($subItem['Link']),
         htmlspecialchars($subItem['Text']),
         ...);
   }
}
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_60284534
Ik snap hem niet helemaal? Hoe kan ik die 2e query dan uitsluiten, terwijl ik pas 1 stap verder weet welke subitems ik op wil halen? (kan het tijdstip zijn hoor .. )
pi_60284951
quote:
Op dinsdag 22 juli 2008 23:59 schreef LeeHarveyOswald het volgende:
Ik snap hem niet helemaal? Hoe kan ik die 2e query dan uitsluiten, terwijl ik pas 1 stap verder weet welke subitems ik op wil halen? (kan het tijdstip zijn hoor .. )
Oh dat kan ook niet
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_60287598
ja, ik kan wel janken
debuggen wordt ook een stuk lastiger op deze manier volgens mij....

en nou ga ik op vakantie
  woensdag 23 juli 2008 @ 14:05:44 #156
85514 ralfie
!Yvan eht nioj
pi_60294846
iemand goed bekend met mod_rewrite?

Ik zoek

http://localhost/includepagina => http://localhost/index.php?page=includepagina

maar dan alleen voor de pagina's in httpRoot/includes/*.php

(dus, als httproot/includes/test.php bestaat moet ie http://localhost/test WEL pakken, anders NIET.

Ik meen me te herinneren dat dit mogelijk is, maar kan het commando niet meer vinden. Iemand die het weet?
pi_60296782
1
2
3
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# hier je RewriteRule

Hier staat dus als de opgevraagde URL geen bestaande bestand of map is hij de RewriteRule moet pakken.
  woensdag 23 juli 2008 @ 17:05:53 #158
85514 ralfie
!Yvan eht nioj
pi_60298945
quote:
Op woensdag 23 juli 2008 15:35 schreef super-muffin het volgende:

[ code verwijderd ]

Hier staat dus als de opgevraagde URL geen bestaande bestand of map is hij de RewriteRule moet pakken.
dat werkt op zich wel, maar dat betekent wel dat die rewriterule altijd gebruikt wordt wanneer de url zelf niet bestaat, ook al is dat doordat de url parameters bevat... (ik wil namelijk alle $_GET netjes wegwerken. Dus, dit is mijn probleem:

1
2
3
4
5
6
7
8
9
10
wwwRoot
+index.php
+includes\
   +test.php
   +deze_ook.php
   +dezeniet.txt
+folder\
   +deze_niet.gif
   +deze_ook_niet.php
+etc.


http://localhost gaat naar index.php
http://localhost/test gaat naar index.php?page=test
(want test.php bestaat in /includes/ )
http://localhost/test/parameter/parameters gaat naar index.php?page=test¶meters
(parameters kan ik zelf wel verwerken, het gaat meer om de mogelijkheid om)
http://localhost/folder/* gaat naar localhost/folder*
http://localhost/nee geeft een 404/303 of whatever

Het is dus echt de bedoeling dat wanneer de eerste parameter van de URI, dus http://localhost/deze/hiernogwat/zooi een bestaand php bestand in de includes-directory is, dat dan, en alleen dan de rewriterule uitgevoerd wordt.

Dus basically zoek ik
1RewriteCond %{REQUEST_URI} ^/(deze_ook|test)$

maar dan eentje die zelf kijkt of de betreffende bestanden bestaan

Dat is mogelijk, toch?

[ Bericht 10% gewijzigd door ralfie op 23-07-2008 17:18:22 ]
pi_60306119
Je moet mod_rewrite alleen gebruiken waarvoor ie bedoeld is - urls rewriten. Checken of een bestand bestaat doe je in je applicatie.
  woensdag 23 juli 2008 @ 22:54:10 #160
85514 ralfie
!Yvan eht nioj
pi_60308158
ok, ik heb al iets in elkaar geflansd, was doodsimpel eigenlijk toen ik erachter kwam dat je references vanuit vorige RewriteConds kon gebruiken...
1
2
3
4
5
RewriteEngine On
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} ^/([^/]+).*$
RewriteCond "C:/Program Files/WAMP/www/includes/$1.php" -f
RewriteRule ^([^/]+)/?(.*)$ index.php?page=$1¶ms=$2

nog ff testen of het eenvoudiger kan, maar het werkt iig. toch bedankt
pi_60309064
quote:
Op woensdag 23 juli 2008 22:54 schreef ralfie het volgende:
ok, ik heb al iets in elkaar geflansd, was doodsimpel eigenlijk toen ik erachter kwam dat je references vanuit vorige RewriteConds kon gebruiken...
[ code verwijderd ]

nog ff testen of het eenvoudiger kan, maar het werkt iig. toch bedankt
Zo gaat het uiteraard alleen op jouw pc werken. Dat kan genoeg zijn maar als je die site ooit eens ergens anders wilt draaien, heb je een probleem.
pi_60315611
quote:
Op woensdag 23 juli 2008 23:24 schreef Light het volgende:

[..]

Zo gaat het uiteraard alleen op jouw pc werken. Dat kan genoeg zijn maar als je die site ooit eens ergens anders wilt draaien, heb je een probleem.
Beetje ongenuanceerde dit is niet portable gezeik, IMHO. Als je zooi van server A naar B gaat overzetten hoef je alleen de paden in je rewrite rule aan te passen, zo moeilijk is het niet. IIS kan zoiezo niet met rewrite rules overweg (lees mod_rewrite, aangezien IIS een andere rewrite engine heeft..), dus het gebruik van mod_rewrite is sowieso niet portable.
pi_60315859
Ik zei niet voor niks om dit soort dingen in je applicatiecode te doen en niet met mod_rewrite, dan kun je namelijk gewoon een config bestand/class hiervoor gebruiken, zoals het hoort. Een pad aanpassen in een rewrite rule is zo gebeurd maar je wil dit soort dingen centraal, op 1 plek kunnen configureren. Als je op tig plekken allerlei paden moet gaan aanpassen voordat je app werkt, dat is gewoon bad practice.
pi_60316876
Dit is alleen een mod_rewrite ding, dus dat is makkelijk te doen. Overige shizzle kan je inderdaad in een configfile gooien (of in een DB, whatever je voorkeur heeft). Persoonlijk vind ik een configfile prettiger dan een DB aangezien ik een file makkelijker vind met updaten.
  donderdag 24 juli 2008 @ 14:11:27 #165
85514 ralfie
!Yvan eht nioj
pi_60320132
quote:
Op donderdag 24 juli 2008 11:17 schreef Farenji het volgende:
Ik zei niet voor niks om dit soort dingen in je applicatiecode te doen en niet met mod_rewrite, dan kun je namelijk gewoon een config bestand/class hiervoor gebruiken, zoals het hoort. Een pad aanpassen in een rewrite rule is zo gebeurd maar je wil dit soort dingen centraal, op 1 plek kunnen configureren. Als je op tig plekken allerlei paden moet gaan aanpassen voordat je app werkt, dat is gewoon bad practice.
joh, boeiend. Ben geen commercieel pakket aan het maken, maar gewoon een amateur website aan het verfraaien. De eerste plaats waar ik instellingen mbt rewriterules ga zoeken is in een htaccess bestand, dus daar staat het goed in mijn geval. Dat dit algemeen als bad practice gezien wordt, boeiend, als het maar (goed) werkt. en dat doet het nu.
pi_60339055
Kleine vraag m.b.t. mysql.

Als ik op een bepaalde pagina met zo'n 15 queries voor't eerst klik zie ik dat de parse tijd (totaal incl queries) zo'n 1,2 seconden is.

Druk ik op F5 dan opeens is het 0,7 secs
en nogmaals op F5 en het is 0,01 secs?

Doet MySQL aan cachen? kan dit namelijk niet inzien!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_60340114
quote:
Op vrijdag 25 juli 2008 12:17 schreef Chandler het volgende:
Als ik op een bepaalde pagina met zo'n 15 queries voor't eerst klik zie ik dat de parse tijd (totaal incl queries) zo'n 1,2 seconden is.

Druk ik op F5 dan opeens is het 0,7 secs
en nogmaals op F5 en het is 0,01 secs?
Bedoel je de tijd die het de server kost om de html te genereren of de tijd die het de browser kost om de pagina te laden?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_60340725
Het eerste
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  vrijdag 25 juli 2008 @ 14:05:28 #169
187069 slacker_nl
Sicko pur sang
pi_60341562
mysql heeft een cache ja.
In theory there is no difference between theory and practice. In practice there is.
pi_60349437
cURL ondersteunt in safe mode geen CURLOPT_FOLLOWLOCATION. Dat heb ik wel nodig. Heeft iemand daar een werkende oplossing voor?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_60349751
<?php echo 'tvp'; ?>
quote:
Op dinsdag 15 juli 2008 17:37 schreef Mirel het volgende:
Hallo, met Mirel, php kleuter.
Ik wil voor een website een soort van text editor hebben, waarin je je allemaal dingen typt, en die op een pagina worden gezet. Heb een héél simpele tutorial gevonden die ik heb gedaan en hier even geupload om te testen.

Wat ie nu doet is tekst op een pagina zetten, maar als je nieuwe tekst erop typt, dan wist ie de andere uit. Wat moet ik in de code toevoegen dat ie dat niet doet?
[ code verwijderd ]

Of moet ik nu iets totaal anders doen, ben echt een php leek.

Ik lees nu ondertussen iets over kant en klare WYSIWYG editors waarmee waarschijnlijk hetzelfde bereikt kan worden, weet iemand daar iets meer over te vertellen?
Tip: Bij het laten zien (index.php) de functie nl2br() om de data (tekst) heen wrappen.
pi_60352563
quote:
Op vrijdag 25 juli 2008 20:58 schreef SuperRembo het volgende:
cURL ondersteunt in safe mode geen CURLOPT_FOLLOWLOCATION. Dat heb ik wel nodig. Heeft iemand daar een werkende oplossing voor?
Ik begrijp hieruit dat curl, indien safemode aanstaat, de locatie van de 30X message niet volgt.

Wat krijg je terug als je een request doet in safe mode?

Aangezien je kan proberen om de location uit te lezen en dan opnieuw een request te doen naar de nieuwe locatie..

Heb het even getest, dit moet je op weg helpen, je moet misschien alleen wat erbij bouwen voor max_redirects, want daar heb ik geen rekening meegehouden.

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
<?php
# php 5.2.1

$ch curl_init();

$curl_opts = array();

$curl_opts[CURLOPT_VERBOSE] = 0;
$curl_opts[CURLOPT_RETURNTRANSFER] = 1;

function 
curl_sm_exec($ch$opts$url) {

    if(
ini_get('safe_mode')) {
        
$opts[CURLOPT_HEADER] = 1;
        
$opts[CURLOPT_CUSTOMREQUEST] = "HEAD";
    }

    
$opts[CURLOPT_URL] = $url;
    
curl_setopt_array($ch$opts);

    
$bla curl_exec($ch);

    
$arr split("\n"$bla);

    foreach(
$arr as $v) {
        if (
preg_match('/^Location: (.*)/'$v$matches)) {
            return 
curl_sm_exec($ch$opts$matches[1]);
        }
    }
    
$opts[CURLOPT_HEADER] = 0;
    
$opts[CURLOPT_CUSTOMREQUEST] = "GET";
    
curl_setopt_array($ch$opts);
    return 
curl_exec($ch);
}

$res curl_sm_exec($ch$curl_opts'www.euronet.nl');
print 
$res "\n";
?>


[ Bericht 42% gewijzigd door slakkie op 25-07-2008 23:58:51 ]
pi_60353348
Ik gebruik deze functie:

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
function curl_redir_exec($ch)
{
   static $curl_loops = 0;
   static $curl_max_loops = 20;
   
   if ($curl_loops++ >= $curl_max_loops)
   {// Maximum number of redirects exceeded
      $curl_loops = 0;
      return false;
   }
   
   curl_setopt($ch, CURLOPT_HEADER, true);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   $data = curl_exec($ch);
   $debbbb = $data;
   
   list($header, $data) = explode("\n\n", $data, 2);
   
   $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
   
   if (!($http_code == 301 || $http_code == 302))
   {
      $curl_loops = 0;
      return $debbbb;
   }
   
   $matches = array();
   preg_match('#Location:(.*?)\n#i', $header, $matches);
   $url = @parse_url(trim(array_pop($matches)));
   if (!$url)
   { // Couldn't process the url to redirect to
      $curl_loops = 0;
      return $data;
   }
   
   $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL));
   if (!$url['scheme']) $url['scheme'] = $last_url['scheme'];
   if (!$url['host']) $url['host'] = $last_url['host'];
   if (!$url['path']) $url['path'] = $last_url['path'];
                
   $new_url = $url['scheme'] .'://'. $url['host'] . $url['path'] . ($url['query'] ? '?'.$url['query'] : '');

   curl_setopt($ch, CURLOPT_URL, $new_url);
   
   return curl_redir_exec($ch);
}


(gebaseerd op code uit de comments van de php curl_setopt pagina)

Zonder dat script krijg ik inderdaad een 30X header en een location.
Maar met dit script gaat er wat mis op de server waar ik de pagina probeer op te vragen (Ik krijg een ASP.NET error pagina :') ). De oorspronkelijke request die ik doe is een post naar een aspx pagina, ik stuur o.a. de viewstate mee en een sessie cookie.

Lokaal heb ik php (natuurlijk) niet in safe mode draaien. Daar werkt 't opvragen van de pagina zonder problemen.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_60353817
Je code werkt hier zonder problemen, met deze kleine uitzondering:

Notice: Undefined offset: 1 in /home/wesleys/sbox/php/bin/curl.php on line 57

Zit in de explode("\n\n", $data, 2);

Weet niet of je lokaal aan het developen bent, maar ik zou safe mode wel even enablen, test wat makkelijker (maar goed, ik test met de cli versie waardoor ik mijn apache php.ini niet hoef aan te raken).

Je kan ook php6 gaan draaien, safe mode bestaat daar niet meer
pi_60357099
Ik denk dat er wat nieuwe cookies worden meegestuurd die ik niet (goed) afhandel. Ik ben echt een cURL n00b
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')