abonnement Unibet Coolblue Bitvavo
pi_68434846
Hoi,

vraaje, ik zie het niet. Helaas.

Ik wil graag iets uitvoeren op het moment dat een string aanwezig is in een array. in_array() is de functie.
Echter, het werkt niet. Ik krijg er het heen en weer van.

Het idee is: scan de gehele root op files en directorys.
Komt een array-value voor in een array met verboden links/files (robots.txt) dan actie niet uitvoeren.

Zie onderstaande functie. Scan pad ($_SERVER['DOCUMENT_ROOT])
Als is bestand: kijk of bestandsnaam niet in de robots.txt-array $omit staat. Zo niet, opnemen in array

Is directory en niet in robots.txt-array $omit, dan scannen. Functie recursief aanroepen. Als de hoofdmap niet toegankelijk is, worden alle onderliggende mappen niet gescand. (toch???)
En precies dit werkt niet.
Ik heb de strings gecontroleerd, de array-values. En die komen overeen. En toch wordt de boel uitgevoerd, ondanks dat het geblokkeerd zou moeten zijn.

Ziet iemand wat ik fout doe?
Het gaat om
1
2
3
4
          if(sizeof($omit) == 0 || !!in_array($main_dir,$omit))
           {
            list_folder($path.'/'.$file);
           }


De code/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
<?php
function list_folder($path)
 {
  global $omit;
  global $file_arr;
  if($handle=opendir($path))
   {
    while(false!==($file=readdir($handle)))
     {
      if ($file<>"." AND $file<>"..")
       {
        $pos=strlen($_SERVER['DOCUMENT_ROOT']);
        $path_to_search=substr($path.'/'.$file,$pos);
        if(is_file($path.'/'.$file))
         {
          if(sizeof($omit) == 0 || !!in_array($path_to_search,$omit))
           {
            $file_arr[]=$path.'/'.$file;
           }
         }
        if(is_dir($path.'/'.$file))
         {
          // De hoofddirectory extraheren
          $path_to_search=$path_to_search.'/';
          $pos=strpos(substr($path_to_search,1),'/')+1;
          $main_dir=substr($path_to_search,0,$pos);
          if(sizeof($omit) == 0 || !!in_array($main_dir,$omit))
           {
            list_folder($path.'/'.$file);
           }
         }
       }
     }
   }
 return $file_arr;
 }?>


[ Bericht 6% gewijzigd door beerten op 27-04-2009 20:25:33 ]
  maandag 27 april 2009 @ 20:20:23 #152
85514 ralfie
!Yvan eht nioj
pi_68435003
!! = niet niet ?
  maandag 27 april 2009 @ 20:20:49 #153
75592 GlowMouse
l'état, c'est moi
pi_68435020
Eenvoudig debugwerk:
1
2
3
4
<?php
echo ">>{$omit}<< zit niet in";
print_r($main_dir);
?>
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_68435399
quote:
Op maandag 27 april 2009 20:20 schreef GlowMouse het volgende:
Eenvoudig debugwerk:
[ code verwijderd ]
??? hmmm, huh?

Ik volg je even niet. $omit is een array met de "verboden" paden uit robots.yyxy
$main_dir is de (hoofd)directory van het pad.

zover ik geïnformeerd ben is het in_array($needle[string], haystack[array])
http://nl2.php.net/manual/en/function.in-array.php

De eerste keer werkt het wel, met de bestanden. Het gaat mis bij de directory's
  maandag 27 april 2009 @ 20:33:07 #155
75592 GlowMouse
l'état, c'est moi
pi_68435604
Oh, dan omgekeerd. Het blijft gokken met PHP. Maar het idee is duidelijk hoe je zoekt waar de fout zit.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_68435731
quote:
Op maandag 27 april 2009 20:33 schreef GlowMouse het volgende:
Oh, dan omgekeerd. Het blijft gokken met PHP. Maar het idee is duidelijk hoe je zoekt waar de fout zit.
Ok. Ik zie het echt ff niet. Het vervelende is dat je op zo'n moment rond blijft malen in bekende cirkels/gedachtendingetjes. Waar je niet uitkomt...
  maandag 27 april 2009 @ 20:38:03 #157
75592 GlowMouse
l'état, c'est moi
pi_68435817
1
2
3
4
5
6
<?php
          
if(sizeof($omit) == || !!in_array($main_dir,$omit))
           {
            
$file_arr[]=$path.'/'.$file;
           }
?>

wordt
1
2
3
4
5
6
<?php
          
if(sizeof($omit) == || !in_array($main_dir,$omit))
           {
            
$file_arr[]=$path.'/'.$file;
           } else { echo 
">>{$main_dir}<< zit niet in"print_r($omit); }
?>
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_68437290
Misschien beetje gekke vraag...

wat gebeurd er hier precies???
[code]
if(sizeof($omit) == 0 || in_array('$main_dir, $omit))
{...}

Ik ben onbekend met deze notatie. Het werkt uitstekend om een bug weg te werken in de in_array() functie.
Maar wat het doet???
pi_68437598
het is een simpele OR
als de size 0 is, of als hij in_array zit, dan is hij true dus.
pi_68437922
quote:
Op maandag 27 april 2009 21:17 schreef Xcalibur het volgende:
het is een simpele OR
als de size 0 is, of als hij in_array zit, dan is hij true dus.
Het gekke is dat zonder die check op 0 de boel een error geeft Wrong datatype. Ik kan nergens een goede oplossing/uitleg vonden.
Het enig concrete dat ik tegenkom is op www.php.net/in-array

Ik weet dat de array bestaat en alle keys hebben values/ Het ding is dus niet leeg. Het bestaat. Dus die check zou overbodig moeten zijn.

Of zie ik het nu niet???

Ik wil dat wanneer een item NIET voorkomt in de array, de boel wordt uitgevoerd.
if(!in_array($main_dir, $omit))
{
...
}

Maar als ik dit zo ingeef komt het met een Warning.

Tekst van www.php.net
quote:
Sometimes, you might want to search values in array, that does not exist. In this case php will display nasty warning:
Wrong datatype for second argument in call to in_array() .

In this case, add a simple statement before the in_array function:

if (sizeof($arr_to_searchin) == 0 || !in_array($value, $arr_to_searchin)) { ... }

In this case, the 1st statement will return true, omitting the 2nd one.
De fout is volgens mij zo simpel dat ik niet scheel genoeg kan kijken om het te zien. Zo dicht bij...
pi_68438360
quote:
Op maandag 27 april 2009 21:25 schreef beerten het volgende:

Ik wil dat wanneer een item NIET voorkomt in de array, de boel wordt uitgevoerd.
if(!in_array($main_dir, $omit))
{
...
}

Maar als ik dit zo ingeef komt het met een Warning.
Welke warning?
pi_68439485
quote:
Op maandag 27 april 2009 21:34 schreef Light het volgende:

[..]

Welke warning?
Warning: in_array() [function.in-array]: Wrong datatype for second argument in pad/naar/bestand.php on line xx

Ik heb gegoogled maar zonder enig zinnig resultaat.
pi_68439878
quote:
Op maandag 27 april 2009 21:57 schreef beerten het volgende:

[..]

Warning: in_array() [function.in-array]: Wrong datatype for second argument in pad/naar/bestand.php on line xx

Ik heb gegoogled maar zonder enig zinnig resultaat.
Dan zou het tweede argument dus geen array zijn. Ook geen tikfoutjes gemaakt in de variabelenaam?
pi_68441304
1
2
3
4
5
6
<?php
error_reporting
(E_ALL);
$a = array();
$b 'needle';
var_dump(in_array($b$a));
?>


Dit levert netjes bool false op, zonder warnings of notices. Als $a geen array is dan krijg ik wel de warning "Wrong datatype for second argument"
  dinsdag 28 april 2009 @ 06:38:37 #165
187069 slacker_nl
Sicko pur sang
pi_68448258
quote:
Op maandag 27 april 2009 17:06 schreef GlowMouse het volgende:
Wat gebeurt er met die code als het net de volgende dag wintertijd wordt? Mktime is hiervoor de enige betrouwbare functie.
Note: As of PHP 5.1.0, this parameter became deprecated. As a result, the new timezone handling features should be used instead.

Denk dat het dus geen enkele drol uitmaakt.
In theory there is no difference between theory and practice. In practice there is.
pi_68448318
quote:
Op dinsdag 28 april 2009 06:38 schreef slacker_nl het volgende:

[..]

Note: As of PHP 5.1.0, this parameter became deprecated. As a result, the new timezone handling features should be used instead.

Denk dat het dus geen enkele drol uitmaakt.
De parameter is_dst is depricated. Maar die had je toch al niet nodig, want de standaardwaarde was -1. En GlowMouse gebruikte die parameter ook niet.

Tussen 12:00 op 28 maart 2009 en 12:00 op 29 maart 2009 zit precies 23 uur door het ingaan van de zomertijd. Als je 3600 * 24 doet, kom je daar niet op.
  dinsdag 28 april 2009 @ 07:19:37 #167
187069 slacker_nl
Sicko pur sang
pi_68448388
time() geeft een unixtime stamp terug die UTC is, dus geen rekening houd met DST (oftewel winter/zomertijd). Heb het niet getest hoor, maar zet de timestamps van 28/29 maart eens in time2str (of hoe die functie ook heet in php) en kijk wat eruit komt...

Overigens ben ik voor het afschaffen van dat hele zomertijd/wintertijd gebeuren, maar dat heeft verder te maken met wakker worden enzo
In theory there is no difference between theory and practice. In practice there is.
  dinsdag 28 april 2009 @ 10:49:23 #168
75592 GlowMouse
l'état, c'est moi
pi_68451993
1
2
3
4
<?php
$t 
strtotime('march 28 2009 23:59');
echo 
date('m-d-Y H:i'$t) . "\r\n" date('m-d-Y H:i'$t+24*3600);
?>

1
2
03-28-2009 23:59
03-30-2009 00:59
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_68452040
Ik heb zelf een uploadscript voor foto's gemaakt. Ik heb hier gebruik gemaakt van url_rewrite en dat is opzich allemaal wel gelukt. Het probleem echter is dat het weergeven van een afbeelding niet echt fijn loopt. Zelf heb ik het gevoel dat ik via een grote omweg de plaatjes af laat drukken. Een voorbeeld mijn pagina::



duidelijk is te zien dat de afbeelding elke keer geladen wordt van de server. Dit valt mij, met ongeveer dezelfde grote afbeeldingen, niet op bij andere hostingpagina's.

voorbeeld zelfde plaatje maar dan andere hosting:



Ook krijg ik een gisteren een internal php error. Ik heb het gevoel dat ik de pagina niet netjes heb opgebouwd en, na veel aanvragen, hierdoor een error geeft.

PHP code die ik gebruik is:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// Content type
header('Content-type: image/jpeg');

// Get new dimensions
list($width_orig$height_orig) = getimagesize($filename);

// Resample
$image_p imagecreatetruecolor($width_orig$height_orig);
$image imagecreatefromjpeg($filename);
imagecopy($image_p$image0000$width_orig$height_orig);

// Output
imagejpeg($image_pnull100);
?>


wat ik hier eigenlijk doe is dat ik de echt url pak ($filename) en deze met gd library omzet naar een url die ik kan gebruiken voor bijvoorbeeld fok (http://www.sharestuff.nl/img/psjwmlsp/afbeelding_test.JPG). De afbeelding staat namelijk niet echt op http://www.sharestuff.nl/img/psjwmlsp/afbeelding_test.JPG
Dit keer zonder signature
  dinsdag 28 april 2009 @ 16:43:04 #170
187069 slacker_nl
Sicko pur sang
pi_68465055
quote:
Op dinsdag 28 april 2009 10:49 schreef GlowMouse het volgende:

[ code verwijderd ]


[ code verwijderd ]
Dat is afhankelijk van je timezone settings:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function time_me($TZ "Europe/Amsterdam"$t 'march 28 2009 23:59') {
    
date_default_timezone_set($TZ) . "\n";
    print 
date_default_timezone_get() . "\n";
    
$t strtotime('march 28 2009 23:59');

    echo 
date('m-d-Y H:i'$t) . "\n";
    echo 
date('m-d-Y H:i'$t+24*3600) . "\n";
}

time_me();
time_me("UTC");
?>


1
2
3
4
5
6
7
php time.php
Europe/Amsterdam
03-28-2009 23:59
03-30-2009 00:59
UTC
03-28-2009 23:59
03-29-2009 23:59
In theory there is no difference between theory and practice. In practice there is.
  dinsdag 28 april 2009 @ 16:53:03 #171
75592 GlowMouse
l'état, c'est moi
pi_68465493
quote:
Op dinsdag 28 april 2009 16:43 schreef slacker_nl het volgende:

[..]

Dat is afhankelijk van je timezone settings:
Mktime niet. En omdat Europe/Amsterdam toch wel een veelgebruikte instelling is hier, zou ik de gok niet wagen en gewoon mktime gebruiken.

Ericjuh: kijk eens naar caching headers. Ook de Content-Length-header ontbreekt bij jou. Waarom gebruik je ook geen readfile, maar maak je een hele nieuwe jpeg?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 28 april 2009 @ 17:01:11 #172
187069 slacker_nl
Sicko pur sang
pi_68465820
quote:
Op dinsdag 28 april 2009 16:53 schreef GlowMouse het volgende:

[..]

Mktime niet. En omdat Europe/Amsterdam toch wel een veelgebruikte instelling is hier, zou ik de gok niet wagen en gewoon mktime gebruiken.

Ericjuh: kijk eens naar caching headers. Ook de Content-Length-header ontbreekt bij jou. Waarom gebruik je ook geen readfile, maar maak je een hele nieuwe jpeg?
Voor zover ik de documentatie van mktime lees is deze ook afhankelijk van de timezone:

Every call to a date/time function will generate a E_NOTICE if the time zone is not valid, and/or a E_STRICT message if using the system settings or the TZ environment variable. See also date_default_timezone_set()
In theory there is no difference between theory and practice. In practice there is.
  dinsdag 28 april 2009 @ 17:07:26 #173
75592 GlowMouse
l'état, c'est moi
pi_68466056
quote:
Op dinsdag 28 april 2009 17:01 schreef slacker_nl het volgende:

[..]

Voor zover ik de documentatie van mktime lees is deze ook afhankelijk van de timezone:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function time_me($TZ "Europe/Amsterdam"$t 'march 28 2009 23:59') {
    
date_default_timezone_set($TZ) . "\n";
    print 
date_default_timezone_get() . "\n";
    
$t strtotime($t);

    echo 
date('m-d-Y H:i'$t) . "\n";
    echo 
date('m-d-Y H:i'mktime(0,0,0,date('n'$t), date('j'$t)+1date('Y'$t)) ) . "\n";
}

time_me();
time_me("UTC");
?>

1
2
3
4
5
6
Europe/Amsterdam
03-28-2009 23:59
03-29-2009 00:00
UTC
03-28-2009 23:59
03-29-2009 00:00

Juist doordat je zelf de dag opgeeft, kan het niet foutgaan.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 28 april 2009 @ 18:35:11 #174
87680 Mirel
Mirel wil een bongophone.
pi_68469177
Ik heb een stukje tekst die er fout uitziet op http://pikler.nl/agenda/kinderopvang . Er zit teveel ruimte tussen. Ik kwam erachter dat het door de forward slash komt. (en mogelijk ook door de dubbele punt)

1
2
3
4
5
6
7
<p>
3e Pikler Platformdag voor pedagogisch medewerkers
 en gastouders in de Kinderopvang op
<i>vrijdag 9 oktober</i> in Utrecht. <br>
Voor aanmelden en/of informatie mail naar Lucia de Jong: 
<a href="mailto:bureauvooropvoeders@home.nl">bureauvooropvoeders@home.nl</a>
</p>


Ik heb de / proberen te veranderen naar maar de spaties komen nog steeds voor.
Ook heb ik de : weggehaald voor de zekerheid en dan weer proberen te gebruiken. Maar ik heb nog steeds dat die tekst veel ruimte tussen de onderlinge woorden heeft.

Dit alles zit in een php pagina die er zo uitziet, dus daarom heb ik het in dit topic gepost:
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$title = 'kinderopvang';
$body =

<<<HTML

 blablablablabla

HTML;

?>


[ Bericht 8% gewijzigd door Mirel op 28-04-2009 18:52:45 ]
When all else fails, you always have delusion.
pi_68469656
quote:
Op dinsdag 28 april 2009 18:35 schreef Mirel het volgende:
Ik heb een stukje tekst die er fout uitziet op http://pikler.nl/agenda/kinderopvang. Er zit tevee lruimte tussen. Ik kwam erachter dat het door de forward slash komt. (en mogelijk ook door de dubbele punt)
[ code verwijderd ]

Ik heb de / proberen te veranderen naar [ afbeelding ] maar de spaties komen nog steeds voor.
Ook heb ik de : weggehaald voor de zekerheid en dan weer [ afbeelding ] proberen te gebruiken. Maar ik heb nog steeds dat die tekst veel ruimte tussen de onderlinge woorden heeft.
Misschien ligt het aan mij, maar ik zie niet wat er mis gaat. Heb je ook een screenshot om de fout te laten zien?
quote:
Dit alles zit in een php pagina die er zo uitziet, dus daarom heb ik het in dit topic gepost:
[ code verwijderd ]
Nouja, eigenlijk is het geen php-fout
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')