Autor | Zpráva | ||
---|---|---|---|
Ondra5678 Profil * |
#1 · Zasláno: 13. 7. 2010, 16:54:22
Našel jsem tady na fóru ten to script.
PHP skript umí zjistit název souboru ve složce, který má být vytvořen, má následovat podle čísla a do něho být zapsán obsah: $max = 0; foreach (new RegexIterator(new DirectoryIterator($dir = '/tmp/_test_'), '~^(\d+)\.php$~', RegexIterator::GET_MATCH) as $item) { if ($item> $max) $max = $item[1]; } $max++; //o jedno vyšší než poslední file_put_contents("$dir/$max.php", 'blah blah'); Šlo by to nějak udělat, aby to místo čísla vypsalo nějaký počet číslic s písmenama (a98bk41FO5K)? |
||
Anonymní Profil * |
#2 · Zasláno: 13. 7. 2010, 17:03:54
$nazov = md5($max); $pocet = "8"; //pocet pismeniek+cisiel (8 = a98bk41F) $nvm = strlen($nazov); $nazov = substr($nazov, 0, -($nvm-$pocet)); asi tak :D |
||
Ondra5678 Profil * |
#3 · Zasláno: 13. 7. 2010, 17:55:02
Díky moc. Ještě bych se chtěl zeptat jesli je to nějak ošetření, aby se soubor nevytřil stejnej a nepřepsal?
|
||
panther Profil |
#4 · Zasláno: 13. 7. 2010, 17:58:19
Ondra5678:
tím, že je v [#2] použit začátek z nějakého hashe, nebál bych se toho. Pravděpodobnost, že by prvních osm znaků z hashů samotných čísel bylo stejných, je poměrně malá. Nevím, kolik budeš mít souborů (desítky, stovky, tisíce?), můžeš si jejich hashe vypsat, jestli se prvních 8 znaků náhodou neshoduje. Odhaduji, že ne. |
||
Ondra5678 Profil * |
#5 · Zasláno: 13. 7. 2010, 18:11:04
Dejme tomu, že tak tisíce a dám na 10 znaků nebo 12 jěšte nevím. Právě že to přepsání nebo-li že se shodnou se bojím, aby pak nějakej soubor neměl jinej obsah.
|
||
Ondra5678 Profil * |
#6 · Zasláno: 13. 7. 2010, 18:16:16
Tědka jsem to zkoušel a mám to na formulář, kterej po vyplnění se zapíše a pořád mi to píše název (d41d8cd98f.php) když to dám vytvořit.
<form action="" method="post"> Jméno: <input type="text" name="jmeno" /> <br /> Povolání: <input type="text" name="povolani" /> <br /> <input type="submit" value="Odeslat" /> </form> <?php if(IsSet($_POST['jmeno']) AND IsSet($_POST['povolani']) AND !empty($_POST['jmeno']) AND !empty($_POST['povolani'])) //Pokud příjdou všechna data a nejsou prázdná { $nazov = md5($max); $pocet = "10"; //pocet pismeniek+cisiel (8 = a98bk41F) $nvm = strlen($nazov); $nazov = substr($nazov, 0, -($nvm-$pocet)); $doSouboru = "$nazov.php"; //Název souboru, kam se data uloží $obsah = "Jmenuji se ".$_POST['jmeno']." a pracuji jako ".$_POST['povolani']."."; //Př. Jmenuji se Jaroslav a pracuji jako dělník. $vytvorit = file_put_contents($doSouboru, $obsah); if($vytvorit) //Pokud se vytvoří { echo "Soubor byl v pořádku uložen!"; } else { //Pokud ovšem ne die("Nastala chyba při ukládání! <a href=\"\">Zkusit znovu</a>."); } } else { die("Musíte vyplnit všechny údaje! <a href=\"\">Zkusit znovu</a>."); } ?> |
||
Chro Profil |
#7 · Zasláno: 13. 7. 2010, 18:21:15
Ondra5678:
Nebo použij jednoduché generování "abcd1234" názvu pro soubor: $nazev_souboru = base_convert(microtime(TRUE), 10, 36); |
||
Ondra5678 Profil * |
#8 · Zasláno: 13. 7. 2010, 18:25:21
Hlavně bych potřeboval, aby se to pokut možno neopakovalo.
|
||
xmark Profil |
#9 · Zasláno: 13. 7. 2010, 18:29:10
Ondra5678:
Nevím přesně, o co ti jde, ale myslím, že skladovat informace tímto stylem je špatně. Jestli chceš mít řádově tisíce položek, kde bude vždy jméno a profese, nauč se používat databázi. Jestli to neuděláš teď, budeš to potřebovat v budoucnu. A jestli toto bude ještě živý projekt, tak to na databázi stejně budeš převádět. Nehledě na to, že spoléhat, že desetiznakový název se skoro určitě nemůže opakovat, je diletantismus. Začni tady: http://www.linuxsoft.cz/article.php?id_article=336 |
||
Ondra5678 Profil * |
#10 · Zasláno: 13. 7. 2010, 18:42:57
xmark
Však já se jen zeptal o radu. Myslím, že odtoho je tady tohle fórum. Jestli myšlíš, že to je diletantismus, tak to teda nevím o čem tohle fórum . |
||
xmark Profil |
#11 · Zasláno: 13. 7. 2010, 18:48:59
Ondra5678:
Jen se ptej, já se s tebou nehádám. Jen ti radím, že na to jdeš špatně. A špatný postup tě stojí čas. |
||
panther Profil |
#12 · Zasláno: 13. 7. 2010, 18:52:58
Ondra5678:
ptej se, co hrdlo ráčí. To, co napsal xmark je rozumná připomínka - když ne pro tento okamžik, minimálně do budoucna. Nejde jen o skladování informací, ale práci s nimi - to se z toho pak zblázníš, až budeš potřebovat něco zpracovat. Ale co, bude to tvůj čas. |
||
Ondra5678 Profil * |
#13 · Zasláno: 13. 7. 2010, 19:13:18
panther:
Však jo, právě proto se ptám, abych se z toho nezbláznil a taky nestrávil nad tím hodně času. Mě napadlo toto řešení, tak jsem se zeptal, když mě xmark poradil tím líp, protože asi o tom něco co ví a může mi poradit co a jak. Nemusí hnedka psát že je to diletantismus a stačí jen napsat co by bylo lepší řešení atd. Díky za rady. |
||
Časová prodleva: 14 let
|
0