www.php.net/explodequote:Op woensdag 22 februari 2006 18:12 schreef wobbel het volgende:
Ik heb een .m3u file in het volgende formaat:
[ code verwijderd ]
Hoe zorg ik ervoor dat ik het getal achter de #EXTINF: krijg (dus 288, 205, 204, 213 etc), de titel achter de komma bij het getal (dus artiest en titel) en de locatie (D:\mp3\februari 2006\young j...etc)
Hoe zorg ik ervoor dat ik dat allemaal uit elkaar haal en apart in strings stop zodat ik elk gegeven in een record kan stoppen?
Dus:
$tijd = 213
$titel = The Source ft. Candi Staton - You Got The Love
$locatie = D:\MP3\Februari 2006\The Source ft. Candi Staton - You Got The Love.mp3
Heel simpel beginseltje
[ code verwijderd ]
quote:Op woensdag 22 februari 2006 19:53 schreef SuperRembo het volgende:
Je doet iets als
[ code verwijderd ]
en toch krijg je een foutmelding over een niet-geescapete quote?
1 2 3 4 5 6 7 8 9 10 11 | if(!get_magic_quotes_gpc()) { $author=addslashes($author); $title=addslashes($title); $description=addslashes($description); } $query="INSERT INTO tabel (id,iuser,send,genre,ISBN,author,title,description,price,image,update_id,date) VALUES(0,48,1,'".$genre."','".$isbn."','".$author."','".$title."','".$description."','".$price."','$image','$update_id',NOW())"; ?> |
1 2 3 4 5 | $author=mysql_real_escape_string($author); $title=mysql_real_escape_string($title); $description=mysql_real_escape_string($description); ?> |
Dan staat magic quotes blijkbaar uitquote:Het valt me wel op dat met de laatste de data niet escaped in de tabel staat.
Stripslashes als het uit een $_POST komtquote:Op woensdag 22 februari 2006 20:06 schreef SuperRembo het volgende:
Het verschil tussen addslashes en mysql_real_escape_string zit er zo te zien (in de manual) vooral in dat die laatste ook dingen als carriage return en newline tekens. En dat zou best het verschil kunnen maken als je description uit een textarea komt.
De beste aanpak is denk ik om altijd als magic quotes aan staan stripslashes over $_GET / $_POST te halen. Als je de sql samenstelt dan gebruik je mysql_real_escape_string.
magic_quotes slasht alles wat zich in $_POST/$_GET/etc. bevind?quote:Op woensdag 22 februari 2006 20:10 schreef Swetsenegger het volgende:
[..]
Stripslashes als het uit een $_POST komtWaarom? magicquotes gaat pas bij een qeury toch slashen?
In dit geval komt de data uit een CSV omdat ik 2000 records in 1 keer moet plaatsen. De code komt min of meer rechtstreeks uit de life website, waar de data WEL uit $_POST komt. Daar gaat het overigens goed.
Maar slashed mysql_real_escape_string de data dan alleen 'virtueel' voor de query ofzo? Want zoals gezegd staat de data niet ge-escaped in de tabel.
1 2 3 4 5 6 7 8 9 | foreach($_GET as $key => $getval) { $_GET[$key] = stripslashes($getval); } foreach($_POST as $key => $postval) { $_POST[$key] = stripslashes($postval); } } |
Nope, zoals hierboven wordt gezegd wordt op alle $_POST, $_GET en $_COOKIE-variabelen addslashes() toegepast op het begin van het script. Normaal doe je dus een stripslashes() op die variabelen op het begin van het script indien magic_quotes_gpc aanstaat, en weer een addslashes() of mysql_real_escape_string() als je het in de query gaat zetten. En niet eerderquote:Op woensdag 22 februari 2006 20:10 schreef Swetsenegger het volgende:
[..]
Stripslashes als het uit een $_POST komtWaarom? magicquotes gaat pas bij een qeury toch slashen?
Ok, ik slash dus data wanneer het de query ingaat (mits magic quotes uitstaan)quote:Op woensdag 22 februari 2006 20:26 schreef JeRa het volgende:
[..]
Nope, zoals hierboven wordt gezegd wordt op alle $_POST, $_GET en $_COOKIE-variabelen addslashes() toegepast op het begin van het script. Normaal doe je dus een stripslashes() op die variabelen op het begin van het script indien magic_quotes_gpc aanstaat, en weer een addslashes() of mysql_real_escape_string() als je het in de query gaat zetten. En niet eerder
Zo magic is magic quotes gpc nietquote:Op woensdag 22 februari 2006 20:10 schreef Swetsenegger het volgende:
[..]
Stripslashes als het uit een $_POST komtWaarom? magicquotes gaat pas bij een qeury toch slashen?
En daarbij komt nog eens het feit dat je het risico loopt dubbel te escapen natuurlijk, bijvoorbeeld als je script van server wisselt.quote:Op woensdag 22 februari 2006 20:32 schreef SuperRembo het volgende:
[..]
Zo magic is magic quotes gpc niet![]()
Magic quotes GPC is gewoon lomp en escaped alle quotes in Get Post en Cookies.
Dat kan problemen geven als je die gegevens wil valideren. Of als je het helemaal niet in een sql string wil gebruiken, zouals een preview in html. Of als je een string op een bepaalde lengte af wil kappen; dan klopt de lengte niet en je het het risico dat je string eindigt op een backslash.
En nu blijkt het ook niet eens altijd te werken
Fuck, met valideren en dergelijke had ik er eigenlijk helemaal nog niet bij nagedacht.quote:Op woensdag 22 februari 2006 20:32 schreef SuperRembo het volgende:
[..]
Zo magic is magic quotes gpc niet![]()
Magic quotes GPC is gewoon lomp en escaped alle quotes in Get Post en Cookies.
Dat kan problemen geven als je die gegevens wil valideren. Of als je het helemaal niet in een sql string wil gebruiken, zouals een preview in html. Of als je een string op een bepaalde lengte af wil kappen; dan klopt de lengte niet en je het het risico dat je string eindigt op een backslash.
En nu blijkt het ook niet eens altijd te werken
Dat is ook de aanbevolen instelling. Maar om een of andere reden staat het bij webhosts vaak wel aan. Het zal wel zijn omdat ouwe brakke scripts niet goed werkenquote:Op woensdag 22 februari 2006 20:36 schreef DutchBlood het volgende:
Wat dat betreft hadden ze magic qoutes/register_globals, en nog wat functies beter weg kunnen laten.
Daarom is het ook aan te raden om aan het begin van elk script iets te includen/require_once-en wat er voor zorgt dat er gestriptslashed wordt wanneer dat nodig is.quote:Op woensdag 22 februari 2006 20:40 schreef Swetsenegger het volgende:
[..]
Fuck, met valideren en dergelijke had ik er eigenlijk helemaal nog niet bij nagedacht.
Hmz, gelukkig staat het op de meeste servers uit, maar wel iets om rekening mee te houden.
Thnks
Uitermate irritant is dat ja. Heb vaak genoeg scripts die niet meer werken doordat het aan staat. Dit omdat sommige variabelen dan ineens 'vervangen' worden.quote:Op woensdag 22 februari 2006 20:41 schreef SuperRembo het volgende:
[..]
Dat is ook de aanbevolen instelling. Maar om een of andere reden staat het bij webhosts vaak wel aan. Het zal wel zijn omdat ouwe brakke scripts niet goed werken
Inderdaad binnenkort een functie voor schrijvenquote:Op woensdag 22 februari 2006 20:47 schreef DutchBlood het volgende:
[..]
Daarom is het ook aan te raden om aan het begin van elk script iets te includen/require_once-en wat er voor zorgt dat er gestriptslashed wordt wanneer dat nodig is.
Dat voorkom je door te controleren of magic quotes GPC aanstaatquote:En daarbij komt nog eens het feit dat je het risico loopt dubbel te escapen natuurlijk, bijvoorbeeld als je script van server wisselt.
Van http://nl3.php.net/manual/nl/function.get-magic-quotes-gpc.phpquote:Op woensdag 22 februari 2006 20:50 schreef Swetsenegger het volgende:
[..]
Inderdaad binnenkort een functie voor schrijven
Dus... stripslashes van alle userinput.
mysql_rela_escape_string bij ALLE data welke de db ingaat.
Dat laatste voorwaardelijk (dus if(!get_magic_quotes_gpc())) of ALTIJD?
[..]
Dat voorkom je door te controleren of magic quotes GPC aanstaat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | if (get_magic_quotes_gpc()) { function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } $_POST = array_map('stripslashes_deep', $_POST); $_GET = array_map('stripslashes_deep', $_GET); $_COOKIE = array_map('stripslashes_deep', $_COOKIE); } ?> |
Op apache kan je het ook uitzetten door een regeltje in .htaccess:quote:Op woensdag 22 februari 2006 20:47 schreef DutchBlood het volgende:
[..]
Daarom is het ook aan te raden om aan het begin van elk script iets te includen/require_once-en wat er voor zorgt dat er gestriptslashed wordt wanneer dat nodig is.
1 |
Kan dat eigelijk niet beter (sneller) met array_walk?quote:Op woensdag 22 februari 2006 20:55 schreef DutchBlood het volgende:
[..]
Van http://nl3.php.net/manual/nl/function.get-magic-quotes-gpc.php
[ code verwijderd ]
ik zal proberen het te verduidelekijenquote:Op woensdag 22 februari 2006 16:01 schreef JeRa het volgende:
[..]
Ik snap niet wat je wilt doen. Wil je externe pagina's opvragen en zodra dit niet lukt iets anders doen? What about zoiets:
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $i=80; $lines = file('http://URL'); while($i < 300) { preg_match_all($regex,$lines[$i],$needle); $needle = split(' ',$needle[0][0]); if($needle[0] != '' && is_numeric($needle[0])) { $query = RunQuery("INSERT INTO"); CloseConDB($con); exit; } $i++; } ?> |
1 2 3 4 5 6 7 8 9 | $tries = 0; do { if ($tries > 0) { sleep(2); } $lines = file('url'); $tries++; } while ((count($lines) == 0) && ($tries < $maxTries)); |
probleem is dat wanneer de pagina down is hij nooit leeg is (je krijgt immers de foutmeldingspagina van windows ofzo terug (geen idee waarom dit gebeurd maar is zo)quote:Op woensdag 22 februari 2006 21:37 schreef JeRa het volgende:
@mschol
2. Als de pagina écht down is kun je er niets aan doen natuurlijk. Maar kun je geen loopje bedenken dat loopt zolang het aantal regels 0 is?
[ code verwijderd ]
Niet netjes, maar het is een simpel voorbeeld van hoe je zoiets zou kunnen afvangen
Niet op deze manier, dat kan wel als je met sockets gaat werken. Beter controleer je gewoon of bepaalde woorden in de array voorkomen, zoals 'Page not found' oidquote:Op woensdag 22 februari 2006 21:47 schreef mschol het volgende:
[..]
of kan ik de http status code misschien ophalen ergens met php?
JeRa is Maroc?quote:Op woensdag 22 februari 2006 22:00 schreef JeRa het volgende:
Beter controleer je ...
1 2 3 4 5 6 7 8 9 10 11 12 13 | $cnt = $db->query("SELECT count(*) as count from images WHERE img_unique = '".$_GET["id"]."'"); $db->doQuery("DELETE FROM images WHERE img_unique = '".$_GET["id"]."'"); $db->doQuery("DELETE FROM cars WHERE car_unique = '".$_GET["id"]."'"); for($x=0; $x<$cnt[0][0]; $x++) { unlink("../files/".$_GET["id"]."_".($x+1).".jpg"); } |
Wat voor een foutmelding krijg je dan?quote:Op donderdag 23 februari 2006 09:34 schreef Boink het volgende:
Hoi
Op e.o.a. manier wil de unlink niet werken
Zie
[ code verwijderd ]
Ik heb dit volledig via de handleiding van php.net gedaan, ik zit in een directory waar hij eerst uit moet en dan in de files directory de foto's moet deleten,
Dit werkt wel op de huidige server alleen niet op de php5 i.c.m. mysql5 server waar binnenkort naar gemigreerd wordt.
Kan iemand mij redden hier?
1 2 3 4 5 6 | if(is_file($file){ unlink($file); }else{ echo $file." bestaat niet."; } |
1 |
1 |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |