strpos() in samenwerking met tekstbestand en dubbelpunt.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dimitri Van Reeth

Dimitri Van Reeth

15/07/2011 10:46:52
Quote Anchor link
Ik ben bezig om een kleine website te maken, waar je de processen van de server kunt zien. Alleen lukt dit niet zo geweldig goed..

Ik wil elke regel van het bestand in 2 delen opsplitsen (naam en path), om deze elks in een cel te steken.
Ik wou dit doen met een substring, zodat als hij C:\ tegenkomt, dat hij vanaf daar moet splitsen.
Maar de strpos-functie om de C:\ te zoeken wil maar niet werken. Heb al verscheidene dingen geprobeerd, maar tevergeefs..

Heb wel al geprobeerd om gewoon de $line_of_text handmatig een regel in te steken, en dat werkt wel! Maar dat is nu ook niet de bedoeling eh..

Quote:
if(isset($_POST['shutdown_x'])){
shell_exec("C:\\Windows\\System32\\cmd.exe /c wmic /output:C:\process.txt process get description,executablepath");

$file_handle = fopen("c:\\process.txt", "r");
while (!feof($file_handle)) {
$line_of_text = fgets($file_handle);

$findme = "C:\\";
$pos = strrpos($line_of_text, $findme);

echo("Line of text: ".$line_of_text."<br />");
echo("Type: ".gettype($line_of_text)."<br />");
echo("Find: ".$findme."<br />");
echo("Position: ".$pos."<br />");

echo("Speciale zoekfunctie: ".stristr($line_of_text, 'C:'));
echo("<br /><hr />");
}
fclose($file_handle);
} ?>


Dit is het tekstbestand dat word aangemaakt door het doscommando:
Quote:
csrss.exe C:\windows\system32\csrss.exe
wininit.exe C:\windows\system32\wininit.exe csrss.exe C:\windows\system32\csrss.exe services.exe C:\windows\system32\services.exe lsass.exe C:\windows\system32\lsass.exe lsm.exe C:\windows\system32\lsm.exe winlogon.exe C:\windows\system32\winlogon.exe svchost.exe C:\windows\system32\svchost.exe AtService.exe c:\Program Files\Fingerprint Sensor\AtService.exe
svchost.exe C:\windows\system32\svchost.exe
svchost.exe C:\windows\System32\svchost.exe
svchost.exe C:\windows\System32\svchost.exe
svchost.exe C:\windows\system32\svchost.exe
Gewijzigd op 15/07/2011 10:48:14 door Dimitri Van Reeth
 
PHP hulp

PHP hulp

19/05/2024 17:17:13
 
Ivo Filot

Ivo Filot

15/07/2011 21:17:56
Quote Anchor link
Het is mij niet helemaal duidelijk wat er precies fout gaat in jouw schrijven. Zou je misschien een voorbeeld kunnen geven wat de output is van jouw script en welke output je zou verwachten?

Ik heb jouw script gedraaid en de strrpos functie geeft (ter voorbeeld) bij de lijn 'svchost.exe C:\windows\system32\svchost.exe' het volgende resultaat:

Line of text: svchost.exe C:\windows\system32\svchost.exe
Type: string
Find: C:\
Position: 12
Speciale zoekfunctie: C:\windows\system32\svchost.exe

Is dit het resultaat dat je verwacht en zoniet, zou je kunnen vertellen wat je wel zou moeten krijgen?
 
Dimitri Van Reeth

Dimitri Van Reeth

15/07/2011 23:24:56
Quote Anchor link
@Ivo Filot
Bedankt voor je reactie!
& de output die jij krijgt, verwacht ik te krijgen..
Maar bij mij geeft hij dus gen positie en de speciale zoekfunctie werkt ook niet.

Zou dit misschien kunnen omdat ik met lokaal met XAMPP werk?
 
Maarten PHP

Maarten PHP

16/07/2011 09:07:36
Quote Anchor link
Dimitri Van Reeth op 15/07/2011 23:24:56:
@Ivo Filot
Bedankt voor je reactie!
& de output die jij krijgt, verwacht ik te krijgen..
Maar bij mij geeft hij dus gen positie en de speciale zoekfunctie werkt ook niet.

Zou dit misschien kunnen omdat ik met lokaal met XAMPP werk?


ja want dat is lokaal op jouw computer en op jouw computer staan die system32 mappen.
 
Ivo Filot

Ivo Filot

16/07/2011 09:53:35
Quote Anchor link
In navolging op wat Maarten aandraagt:

Controleer eens wat de 'return string' van het shell_exec commando is. Wellicht dat het in jouw huidige configuratie van je server niet is toegestaan om een dergelijk commando te draaien. Je krijgt dan een foutmelding en de 'return string' is dan de NULL-string.

Wanneer je strrpos of andere commando's loslaat op een NULL string, vind je natuurlijk geen enkele spreekwoordelijke naald in je hooiberg.

Dus ter controle: Wat is de output van het volgende script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

ini_set('display_errors',1);   // <--- Laat alle foutmeldingen zien
error_reporting(E_ALL);

shell_exec("C:\\Windows\\System32\\cmd.exe /c wmic /output:C:\process.txt process get description,executablepath");

$file_handle = fopen("c:\\process.txt", "r");    

while (!feof($file_handle))
{

    $line_of_text = fgets($file_handle);
   echo($line_of_text."<br>");
}


fclose($file_handle);

?>
Gewijzigd op 16/07/2011 09:55:32 door Ivo Filot
 
Dimitri Van Reeth

Dimitri Van Reeth

18/07/2011 15:52:37
Quote Anchor link
@Ivo Filot
Dit krijg ik als output:
Quote:
ÿþDescription ExecutablePath
System Idle Process
System
smss.exe
csrss.exe C:\windows\system32\csrss.exe
wininit.exe C:\windows\system32\wininit.exe
csrss.exe C:\windows\system32\csrss.exe
services.exe C:\windows\system32\services.exe
lsass.exe C:\windows\system32\lsass.exe
lsm.exe C:\windows\system32\lsm.exe
winlogon.exe C:\windows\system32\winlogon.exe
svchost.exe C:\windows\system32\svchost.exe
AtService.exe c:\Program Files\Fingerprint Sensor\AtService.exe
svchost.exe C:\windows\system32\svchost.exe
svchost.exe C:\windows\System32\svchost.exe
svchost.exe C:\windows\System32\svchost.exe
svchost.exe C:\windows\system32\svchost.exe
audiodg.exe
svchost.exe C:\windows\system32\svchost.exe

Enzoverder.....

Dus hij haalt de gegevens wel op.
Maar ik vind het wel raar dat hij telkens de tekens ÿþ voor de eerste regel zet...

Toevoeging op 19/07/2011 14:24:06:

Na even op het internet te zoeken, ben ik al iets wijzer geworden...
Het tekstbestand dat word aangemaakt is UNICODE. Als ik het type van het tekstbestand verander naar ANSI, dan werkt het wel :)
Maar hoe kan ik zorgen dat het hele tekstbestand, of elke lijn automatisch omgevormd word naar ANSI?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.