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 | <?php class Customer { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } private $address; public function getAddress() { return $this->address; } public function setAddress($address) { $this->address = $address; } // More properties ... :) public function __construct($name = '', $address = '') { $this->setName($name); $this->setAddress($address); } public function save() { // save logic here } public function delete() { // delete logic here } } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php $adres = strip_tags( get_the_term_list($post->ID, 'adres') ); $postcode = strip_tags( get_the_term_list($post->ID, 'postcode') ); $httpadres = "http://maps.google.com/maps/api/geocode/json?address="; $httpadres .= str_replace(" ", "+", $adres); $httpadres .= "+"; $httpadres .= str_replace(" ", "+", $postcode); $httpadres .= "&sensor=false"; $geocode=file_get_contents($httpadres); $output= json_decode($geocode); $lat = $output->results[0]->geometry->location->lat; $long = $output->results[0]->geometry->location->lng; ?> |
Teveel requests gedaan?quote:Op dinsdag 6 december 2011 13:05 schreef _superboer_ het volgende:
edit: gister werkte de code nog wel
Hoe worden requests geteld? Gaat het om dan om het aantal requests vanaf de domein japansesushi.nl of vanaf mijn ip-adres?quote:
https://code.google.com/i(...)on/geocoding/#Limitsquote:Op dinsdag 6 december 2011 13:18 schreef _superboer_ het volgende:
[..]
Hoe worden requests geteld? Gaat het om dan om het aantal requests vanaf de domein japansesushi.nl of vanaf mijn ip-adres?
Als ik vanaf een ander device probeer werkt het ook niet, terwijl als ik zelf in m'n browser naar de api-url surf ik wel iets terug krijg.quote:Op dinsdag 6 december 2011 13:21 schreef mstx het volgende:
[..]
https://code.google.com/i(...)on/geocoding/#Limits
Ik neem aan dat hij het aantal requests per IP telt. Als je fiile_get_contents doet stuurt hij volgens mij sowieso geen domeinnaam mee dus die kan google niet achterhalen.
Wie doet de request bij Google?quote:
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 | <?php mysql_query('INSERT INTO toll_free_cross_corporation (`LINE_NO`, `CORPORATION_ID`, `BILL_PLAYER_ID`, `NODE_NO`, `ACCOUNT_NO`, `PAGE_NO`, `INVOICE_NO`, `INVOICE_DATE`, `ACCOUNTING_CODE`, `ACCOUNTING_DESCRIPTION`, `ACCOUNTING_ID_DESCRIPTION`, `NUMBER_CALLED_FROM`, `DATE_CALLED`, `TIME_CALLED`, `CALLER_NUMBER`, `PLACE_CALLED_FROM`, `MINUTES_CALLED`, `ROUTED_FROM_NETWORK`, `ROUTED_FROM_NCP`, `ROUTED_FROM_RATE`, `ROUTED_FROM_TYPE`, `USAGE`, `PAYPHONE_USE_CHARGE`, `SURCHARGE`, `TOTAL`, `END_TIME`, `CALCULATED_RATE`, `MINUTES_TRANSLATED_TO_SECONDS`, `START_DATE_TIME_TIMESTAMP`, `END_DATE_TIME_TIMESTAMP` ) VALUES '.implode(',', $sql)) or die (mysql_errno() . ": ". mysql_error()); ?> |
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 | <?php foreach( $toll_free_cross_corporation_data_array as $row ) { $sql[] = '("'.mysql_real_escape_string($row['LINE_NO']).'", "'.mysql_real_escape_string($row['CORPORATION_ID']).'", "'.mysql_real_escape_string($row['BILL_PLAYER_ID']).'", "'.mysql_real_escape_string($row['NODE_NO']).'", "'.mysql_real_escape_string($row['ACCOUNT_NO']).'", "'.mysql_real_escape_string($row['PAGE_NO']).'", "'.mysql_real_escape_string($row['INVOICE_NO']).'", "'.mysql_real_escape_string($row['INVOICE_DATE']).'", "'.mysql_real_escape_string($row['ACCOUNTING_CODE']).'", "'.mysql_real_escape_string($row['ACCOUNTING_DESCRIPTION']).'", "'.mysql_real_escape_string($row['ACCOUNTING_ID_DESCRIPTION']).'", "'.mysql_real_escape_string($row['NUMBER_CALLED_FROM']).'", "'.mysql_real_escape_string($row['DATE_CALLED']).'", "'.mysql_real_escape_string($row['TIME_CALLED']).'", "'.mysql_real_escape_string($row['CALLER_NUMBER']).'", "'.mysql_real_escape_string($row['PLACE_CALLED_FROM']).'", "'.mysql_real_escape_string($row['MINUTES_CALLED']).'", "'.mysql_real_escape_string($row['ROUTED_FROM_NETWORK']).'", "'.mysql_real_escape_string($row['ROUTED_FROM_NCP']).'", "'.mysql_real_escape_string($row['ROUTED_FROM_RATE']).'", "'.mysql_real_escape_string($row['ROUTED_FROM_TYPE']).'", "'.mysql_real_escape_string($row['USAGE']).'", "'.mysql_real_escape_string($row['PAYPHONE_USE_CHARGE']).'", "'.mysql_real_escape_string($row['SURCHARGE']).'", "'.mysql_real_escape_string($row['TOTAL']).'", "'.mysql_real_escape_string($row['END_TIME']).'", "'.mysql_real_escape_string($row['CALCULATED_RATE']).'", "'.mysql_real_escape_string($row['MINUTES_TRANSLATED_TO_SECONDS']).'", "'.mysql_real_escape_string($row['START_DATE_TIME_TIMESTAMP']).'", "'.mysql_real_escape_string($row['END_DATE_TIME_TIMESTAMP']).'" )'; } ?> |
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 | CREATE TABLE IF NOT EXISTS `toll_free_cross_corporation` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `LINE_NO` text NOT NULL, `PAGE_NO` int(11) NOT NULL, `CORPORATION_ID` text NOT NULL, `BILL_PLAYER_ID` text NOT NULL, `NODE_NO` text NOT NULL, `ACCOUNT_NO` text NOT NULL, `INVOICE_NO` text NOT NULL, `INVOICE_DATE` date NOT NULL, `ACCOUNTING_CODE` text NOT NULL, `ACCOUNTING_DESCRIPTION` text NOT NULL, `ACCOUNTING_ID_DESCRIPTION` text NOT NULL, `NUMBER_CALLED_FROM` text NOT NULL, `DATE_CALLED` date NOT NULL, `TIME_CALLED` time NOT NULL, `CALLER_NUMBER` text NOT NULL, `PLACE_CALLED_FROM` text NOT NULL, `MINUTES_CALLED` decimal(6,2) NOT NULL, `ROUTED_FROM_NETWORK` varchar(1) NOT NULL, `ROUTED_FROM_NCP` varchar(1) NOT NULL, `ROUTED_FROM_RATE` varchar(1) NOT NULL, `ROUTED_FROM_TYPE` varchar(2) NOT NULL, `USAGE` decimal(6,2) NOT NULL, `PAYPHONE_USE_CHARGE` decimal(6,2) NOT NULL, `SURCHARGE` decimal(6,2) NOT NULL, `TOTAL` decimal(6,2) NOT NULL, `END_TIME` time NOT NULL, `CALCULATED_RATE` decimal(4,4) NOT NULL, `MINUTES_TRANSLATED_TO_SECONDS` int(11) NOT NULL, `START_DATE_TIME_TIMESTAMP` text NOT NULL, `END_DATE_TIME_TIMESTAMP` text NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1"; |
Zit wat in, zou ook een varchar moeten zijn eigenlijk.quote:Op dinsdag 6 december 2011 20:46 schreef GlowMouse het volgende:
verander mysql_query in echo en kijk wat eruit komt
let ook op je datatypes, text om een datum op te slaan is raar
1 2 3 4 5 | if (file_exists(DIR_DATABASE . $driver . '.php')) { require_once(DIR_DATABASE . $driver . '.php'); } else { exit('Error: Could not find database file ' . DIR_DATABASE . $driver . '.php!'); } |
Het moet em ergens in de includes zitten, want als ik het volgende aanpasquote:Op woensdag 7 december 2011 14:06 schreef GlowMouse het volgende:
Zoek op cwd of stel een absoluut pad in.
1 2 | // define('DIR_DATABASE', DIR_SYSTEM.'database/'); define('DIR_DATABASE', $_SERVER['DOCUMENT_ROOT'].'/OpenCart/system/database'); |
1 2 3 4 5 6 | // DIR define('INCLUDE_PATH', $_SERVER['DOCUMENT_ROOT'].'/OpenCart'); define('DIR_CATALOG', 'catalog/'); define('DIR_APPLICATION', DIR_CATALOG); define('DIR_SYSTEM', 'system/'); |
1 2 | // Set Include Path ini_set('include_path', INCLUDE_PATH); |
Die zag ik aankomen idd en had ik al gedaan, zit nu weer met een nieuwe error dus ga weer even debuggenquote:Op woensdag 7 december 2011 14:28 schreef GlowMouse het volgende:
Ook de map voor je language file absoluut instellen dan maar. Of stel DIR_SYSTEM absoluut in.
Verander /index\.php eens naar /index.phpquote:Op woensdag 7 december 2011 15:37 schreef cablegunmaster het volgende:
URL: /producten/303/45/
Resultaat: index.php?page=producten&gid=303&product=45
RewriteRule ^/?producten/(.*)/?(.*)/$ /index\.php?page=producten&gid=$1&product=$2 [L]
Alleen klopt dit niet, en ik zie niet wat. ik heb geprobeerd met een regex pattern checker:
Te kijken of de regex overeen kwam met de url: http://regexpal.com/
maar hij wil de URL niet in Resultaat veranderen.
1 | RewriteRule ^producten/(.*)/(.*)/$ /index.php?page=producten&gid=$1&product=$2 [L] |
Dat zal hem wel zijn. hoe kan ik dat voorkomen?quote:Op woensdag 7 december 2011 15:42 schreef GlowMouse het volgende:
^/?producten/(.*)/?(.*)/$
Die eerste .* kan nu 303/45 matchen
Dankjequote:Op woensdag 7 december 2011 15:40 schreef mstx het volgende:
[..]
Verander /index\.php eens naar /index.php
Of probeer het anders eens zo:
[ code verwijderd ]
1 2 3 4 5 6 | <?php $videoplayer->setSource('http://blabla.mpg'); $videoplayer->setDimensions($x, $y); $videoplayer->etc; $videoplayer->start(); ?> |
Heeft vrij weinig met PHP te maken gezien dit uiteindelijk met HTML moet worden opgelost, PHP is slechts een serverside taal, die kan zoiets niet. Dit zou dan een soort wrapper worden die uiteindelijk ook een HTML oplossing moet gebruiken.quote:Op donderdag 8 december 2011 02:20 schreef Diabox het volgende:
Weet iemand of het volgende al bestaat:
Ik zoek iets waarmee ik heel simpel 'n video bestand kan embedden op 'n pagina, dat ik het als volgt ongeveer kan aanroepen:
[ code verwijderd ]
Oid. Wil geen poespas admin panel of wat dan ook erbij. Wil puur en alleen in m'n php bestand alles kunnen setten, en dat ie vervolgens het embed in m'n div
In welk topic hoort dit precies thuis?
Ik weet wat PHP is ik zit bij je in de klas rememberquote:Op donderdag 8 december 2011 02:23 schreef Luchtkoker het volgende:
[..]
Heeft vrij weinig met PHP te maken gezien dit uiteindelijk met HTML moet worden opgelost, PHP is slechts een serverside taal, die kan zoiets niet. Dit zou dan een soort wrapper worden die uiteindelijk ook een HTML oplossing moet gebruiken.
1 2 3 4 | <?php $controlegetal = 10112310549223002232100; $controlegetal = 98 - ($controlegetal % 97); //een echo hierna geeft 20 ?> |
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 | <?php function controleer_iban($iban) { $iban = str_replace(array(" ", " ", " ", "\t"), "", $iban); $iban = strtoupper(str_replace(" ", "", $iban)); if(strlen($iban)>34) return false; $acceptabel = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0"; $acceptabel = explode(" ", $acceptabel); for($i = 0; $i<strlen($iban); $i++) { if(in_array(substr($iban, $i, 1), $acceptabel) === false) return false; } $alfa = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"; $alfa = explode(" ", $alfa); for($i = 1; $i<27; $i++) { $alfa_replace[] = $i+9; } $controlegetal = str_replace($alfa, $alfa_replace, substr($iban, 4, strlen($iban)-4).substr($iban, 0, 2)."00"); $controlegetal = 98 - (int)bcmod($controlegetal,97); if((int)$controlegetal === (int)substr($iban, 2, 2)) return true; else return false; } ?> |
1 2 3 4 | <?php $a = 182316110001234567232100; var_dump($a); ?> |
Ik krijg inderdaadquote:Op donderdag 8 december 2011 12:14 schreef GlowMouse het volgende:
Het probleem is dat als jij 182316110001234567232100 invoert, er niet als 182316110001234567232100 mee wordt gerekend. Doe dit maar eens:
[ code verwijderd ]
Wat je kunt doen zonder bcmod, is het getal als string opslaan en dan zelf een staartdeling uitvoeren.
1 2 3 | <?php string(24) "101123100549223002232100" ?> |
1 2 3 | <?php 9.5086309658297E+16 ?> |
Het is niet dat ik er bang voor ben, maar dit is dan veel makkelijkerquote:Op donderdag 8 december 2011 12:23 schreef GlowMouse het volgende:
Mensen die bang zijn van een staartdeling.
quote:These functions are only available if PHP was configured with --enable-bcmath
Ik krijg trouwens als type float terug, ligt dat aan het feit dat ik 64bit OS heb ?quote:Op donderdag 8 december 2011 12:14 schreef GlowMouse het volgende:
Het probleem is dat als jij 182316110001234567232100 invoert, er niet als 182316110001234567232100 mee wordt gerekend. Doe dit maar eens:
[ code verwijderd ]
Wat je kunt doen zonder bcmod, is het getal als string opslaan en dan zelf een staartdeling uitvoeren.
Nee, dat komt omdat het getal groter is dan PHP_INT_MAX.quote:Op donderdag 8 december 2011 18:38 schreef Pakspul het volgende:
[..]
Ik krijg trouwens als type float terug, ligt dat aan het feit dat ik 64bit OS heb ?
Anyway het is "opgelost". In ieder geval de functie werkt. PHP is opnieuw compiled met bc_math supportquote:Op donderdag 8 december 2011 19:06 schreef Light het volgende:
[..]
Nee, dat komt omdat het getal groter is dan PHP_INT_MAX.
1 2 3 4 5 6 | N_ID | CALLING_CARD_NO | CALLED_FROM | START_TIMESTAMP | END_TIMESTAMP 1 | 0123 | BOSTON | 1230000 | 1230020 2 | 0123 | BOSTON | 1230040 | 1230060 3 | 0123 | CHINA | 1230080 | 1230100 4 | 0123 | NETHERLANDS | 1245000 | 1245010 5 | 0124 | TAIWAN | 1230000 | 1230100 |
Als er een foreign key op acc_id moet, moet je de tabel users wijzigen.quote:Op maandag 12 december 2011 11:43 schreef cablegunmaster het volgende:
SQL-query:
ALTER TABLE `accounts` ADD FOREIGN KEY ( `id` ) REFERENCES `DB_NAME`.`users` (
`acc_id`
) ON DELETE CASCADE ON UPDATE RESTRICT ;
MySQL retourneerde: Documentatie
#1452 - Cannot add or update a child row: a foreign key constraint fails (`DB_NAME`.<result 2 when explaining filename '#sql-419_1bae51'>, CONSTRAINT `#sql-419_1bae51_ibfk_1` FOREIGN KEY (`id`) REFERENCES `users` (`acc_id`) ON DELETE CASCADE)
Hoe kan ik dit oplossen?![]()
Wat ik wou doen was een Foreign key op een acc_id uit users zetten. en op Accounts als ik daar 1 verwijderde dat uit accounts een corresponderend ID verdween. Alleen krijg ik opeens deze melding. Uit google wordt ik niet veel wijzer. beide tabellen hebben een InnoDB engine.
1 2 | ALTER TABLE `users` ADD FOREIGN KEY (`acc_id`) REFERENCES `accounts` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT; |
Zoiets, denk ik.quote:Op zondag 11 december 2011 11:24 schreef ViPeRII het volgende:
Hulp gezocht met een query!
Ik heb mijn gegevens in 1 tabel zitten, en daar wil ik een vergelijking op loslaten.
Tabel: Card
Velden: N_ID, CALLING_CARD_NO, CALLED_FROM, START_TIMESTAMP, END_TIMESTAMP
nu wil ik een selectie maken, waarbij ik per CALLING_CARD kijk, of de CALLED_FROM veranderd is, binnen een bepaalde tijd (zeg 2 uur). Maar ik kom totaal niet uit mijn query
Hij moet dus zichzelf gaan itereren, maar als ik dat doe, krijg ik meer resultaten terug dan dat er rijen in mijn tabel zitten.
[ code verwijderd ]
Waarbij dan dus rij 2 + 3 geselecteerd zouden moeten worden, maar niet 4 omdat die dan buitend mijn zoekgebied valt (buiten de 2 uur), en 2 + 3 eigenlijk om dat ik de resultaten meteen wil hebben, maar als ik het ID bijvoorbeeld heb van 3 omdat die foutief is, denk ik dat ik er ook nog wel uit kan komen. Wie kan mij helpen?
Ik was begonnen met:
SELECT n1.*, n2.* FROM card n1 JOIN card n2 ON n1.CALLING_CARD_NO = n2.CALLING_CARD_NO WHERE n1.N_ID <> n2.N_ID AND n1.CALLED_FROM <> n2.CALLED_FROM
Maar ook dat levert al meer resultaten op dan dat er rijen in mijn tabel zitten :S
1 2 3 4 5 6 7 8 9 10 | SELECT n1 . * , n2 . * FROM card n1 INNER JOIN card n2 ON n1.calling_card_no = n2.calling_card_no WHERE n1.called_from <> n2.called_from AND n2.id = ( SELECT min( id ) FROM card n WHERE n.id > n1.id AND n.calling_card_no = n1.calling_card_no ) |
Ik krijg dezelfde foutmelding met jou query , ik probeer dit simpelweg met phpmyadmin uit te voeren en ik word er niet wijzer van. na 3 pagina's google doorzoeken op deze melding.quote:Op maandag 12 december 2011 21:46 schreef Light het volgende:
[..]
Als er een foreign key op acc_id moet, moet je de tabel users wijzigen.
[ code verwijderd ]
Bevatten de tabellen al data? En zijn de kolommen wel gelijk?quote:Op dinsdag 13 december 2011 01:15 schreef cablegunmaster het volgende:
[..]
Ik krijg dezelfde foutmelding met jou query , ik probeer dit simpelweg met phpmyadmin uit te voeren en ik word er niet wijzer van. na 3 pagina's google doorzoeken op deze melding.
1 2 3 4 5 6 7 8 9 10 11 12 | SELECT table_schema, table_name, column_name, column_type FROM information_schema.columns WHERE table_schema='db_name' AND ( ( table_name = 'users' AND column_name = 'acc_id' ) OR ( table_name = 'accounts' AND column_name = 'id' ) ) |
1 2 3 4 5 6 | SELECT product.*, count(order_content.ProductID) as productcount FROM product, order_content WHERE product.ID = order_content.ProductID GROUP BY product.ID ORDER BY productcount LIMIT 0, 10 |
Gebruik je in products zowel NULL als 0 om aan te geven dat een product niet actief is? Is het niet handiger om daar 1 oplossing voor te kiezen, altijd 0 bij inactief en 1 bij actief?quote:Op dinsdag 13 december 2011 21:22 schreef Swetsenegger het volgende:
Simpele vraag, ik een tabel (order_content) waar in elke row, naast andere gegevens, een product ID staat. En dit is een gekocht produkt.
In een andere tabel (products) staat of een product actief is (NOT NULL or <>0)
Nu wil ik een top 10 van de meest verkochte produkten die nog actief zijn. Kan iemand me even op weg helpen met de query(ies)?
idd, gebruik Tinyant(1) als boolean.quote:Op dinsdag 13 december 2011 21:41 schreef Light het volgende:
[..]
Gebruik je in products zowel NULL als 0 om aan te geven dat een product niet actief is? Is het niet handiger om daar 1 oplossing voor te kiezen, altijd 0 bij inactief en 1 bij actief?
Kleine mier?quote:Op dinsdag 13 december 2011 21:43 schreef Pakspul het volgende:
[..]
idd, gebruik Tinyant(1) als boolean.
Het heeft een geschiedenisquote:Op dinsdag 13 december 2011 21:41 schreef Light het volgende:
[..]
Gebruik je in products zowel NULL als 0 om aan te geven dat een product niet actief is? Is het niet handiger om daar 1 oplossing voor te kiezen, altijd 0 bij inactief en 1 bij actief?
Echt, als het zo eenvoudig was had ik het gedaanquote:
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 47 48 49 50 | <?php define('TIMEDHASH_MAX_TIME_SECONDS', 1); define('TIMEDHASH_ALGORITHM', 'sha256'); function get_timedhash($str) { $start_time = microtime(true); $end_time = $start_time+TIMEDHASH_MAX_TIME_SECONDS; $a= 0; $new_str = $str; while(microtime(true) < $end_time) { $new_str = hash(TIMEDHASH_ALGORITHM, $new_str.$a); $a++; } return $new_str; } function match_timedhash($hash,$str) { $max_time_seconds = TIMEDHASH_MAX_TIME_SECONDS*1.5; $start_time = microtime(true); $end_time = $start_time+$max_time_seconds; $a= 0; $new_str = $str; while(microtime(true) < $end_time) { $new_str = hash(TIMEDHASH_ALGORITHM, $new_str.$a); if ($new_str == $hash) return true; $a++; } return false; } echo $hash = get_timedhash('test'); echo ' '; var_dump(match_timedhash($hash, 'test')); die(); ?> |
Nou dan heb je de juiste variabelen nodig lijkt mij als ik het zo 1-2-3 lees.quote:Op woensdag 14 december 2011 20:29 schreef Faux. het volgende:
Hoe kan ik met PHP bij een pagina komen die beveiligd is met HTTP 401?
Nee. Ik probeer nu een cURL-oplossing die ik ergens op internet gevonden heb. Even testenquote:Op woensdag 14 december 2011 20:54 schreef cablegunmaster het volgende:
[..]
Nou dan heb je de juiste variabelen nodig lijkt mij als ik het zo 1-2-3 lees.
Is de pagina van jezelf?
En anders kan het ook door een header mee te sturen, zie: http://www.electrictoolbo(...)g-username-password/quote:Op woensdag 14 december 2011 20:58 schreef Faux. het volgende:
[..]
Nee. Ik probeer nu een cURL-oplossing die ik ergens op internet gevonden heb. Even testen
Dank je voor je bijdrage, maar de cURL-oplossing werktequote:Op woensdag 14 december 2011 21:27 schreef The_Terminator het volgende:
[..]
En anders kan het ook door een header mee te sturen, zie: http://www.electrictoolbo(...)g-username-password/
Waarom gebruik je niet gewoon http://php.net/manual/en/function.crypt.php ? SHA-512 encryptie? In combinatie met afdwingen van lange wachtwoorden die sterk moeten zijn (meer dan acht symbolen lang en moet volgende bezitten: hoofdletters, kleine letters, cijfers en mogelijk symbolen) dan heb je redelijke garantie dat wanneer ze het wachtwoord hebben ze deze de eerste tijd niet zullen kraken.quote:Op woensdag 14 december 2011 01:30 schreef wipes66 het volgende:
Ik zocht een goede manier om wachtwoorden op te slaan. Van vinden jullie van deze methode? Hashen gebaseerd op tijd... md5 doet het 0,3 miljoen keer bij mij
[ code verwijderd ]
En zorg voor een goede, lange salt zodat je ook geen last hebt van rainbow table attacks. Want een wachtwoord als "Secret1234!" voldoet aan je eisen maar staat vast wel in wat rainbow tabellen.quote:Op donderdag 15 december 2011 08:20 schreef Pakspul het volgende:
[..]
Waarom gebruik je niet gewoon http://php.net/manual/en/function.crypt.php ? SHA-512 encryptie? In combinatie met afdwingen van lange wachtwoorden die sterk moeten zijn (meer dan acht symbolen lang en moet volgende bezitten: hoofdletters, kleine letters, cijfers en mogelijk symbolen) dan heb je redelijke garantie dat wanneer ze het wachtwoord hebben ze deze de eerste tijd niet zullen kraken.
Altijd met salts gaan werken.quote:Op woensdag 14 december 2011 01:30 schreef wipes66 het volgende:
Ik zocht een goede manier om wachtwoorden op te slaan. Van vinden jullie van deze methode? Hashen gebaseerd op tijd... md5 doet het 0,3 miljoen keer bij mij
[ code verwijderd ]
Dit werkt met wat aanpassingen perfect:quote:Op dinsdag 13 december 2011 21:37 schreef Pakspul het volgende:
[ code verwijderd ]
ZoietsHaalt alle product informatie op en geeft als extratje nog mee het aantal keren dat product is verkocht (voorkomt in order_content)
Je moet zelf evens in de WHERE de AND product.active = ja NOT NULL, weet niet precies hoe je het hebt.
1 2 3 4 5 6 | SELECT produkten.*, count(order_content.product_id) as productcount FROM produkten, order_content WHERE produkten.product_id = order_content.product_id AND produkten.product_menu IS NOT NULL AND produkten.product_menu<>0 GROUP BY produkten.product_id ORDER BY productcount DESC LIMIT 0, 10 |
1 2 | WHERE orders between order_date ('2010/01/01', 'yyyy/mm/dd') AND order_date ('2010/12/31', 'yyyy/mm/dd'); |
1 2 3 4 5 6 7 8 | SELECT produkten.*, count(order_content.product_id) as productcount FROM produkten, order_content WHERE produkten.product_id = order_content.product_id AND produkten.product_menu IS NOT NULL AND orders between order_date ('2010/01/01', 'yyyy/mm/dd') AND order_date ('2010/12/31', 'yyyy/mm/dd') AND produkten.product_menu<>0 GROUP BY produkten.product_id ORDER BY productcount DESC LIMIT 0, 10 |
Ik vind het altijd vervelend als een site mij afdwingt wat ik wel en niet in mijn wachtwoord mag hebben. Met een goede salt (en de eis dat het wachtwoord niet leeg mag zijn) moet je een heel eind kunnen komen. Je kunt de salt (of een deel van de salt) ook afhankelijk maken van het id van de user.quote:Op donderdag 15 december 2011 08:20 schreef Pakspul het volgende:
[..]
Waarom gebruik je niet gewoon http://php.net/manual/en/function.crypt.php ? SHA-512 encryptie? In combinatie met afdwingen van lange wachtwoorden die sterk moeten zijn (meer dan acht symbolen lang en moet volgende bezitten: hoofdletters, kleine letters, cijfers en mogelijk symbolen) dan heb je redelijke garantie dat wanneer ze het wachtwoord hebben ze deze de eerste tijd niet zullen kraken.
Klinkt alsof je een index moet toevoegen aan de tabel. Met EXPLAIN SELECT kun je zien hoe MySQL de query wil uitvoeren (en dat geeft ook informatie over waarom het zo lang duurt).quote:Op donderdag 15 december 2011 19:54 schreef Swetsenegger het volgende:
Met wat aanpassingen lijkt het te werken, alleen duurt de query 59 seconden
Ik ga even verder knutselen. Misschien is het handiger als ik met subqueries ga werken? Dat ik eerst alle ordercontent van 2011 eruit trek en met die resultset de count query doe.
quote:Op donderdag 15 december 2011 22:08 schreef Light het volgende:
[..]
Klinkt alsof je een index moet toevoegen aan de tabel. Met EXPLAIN SELECT kun je zien hoe MySQL de query wil uitvoeren (en dat geeft ook informatie over waarom het zo lang duurt).
Ik denk dat er geen index op orders.orderdate staat. Een index daar zal helpen. En verder wat GlowMouse zegt.quote:
ANSI ken ik alleen van BBS systemen, glowmouse ;-) Ik ga er mee aan de slag en hou jullie op de hoogte.quote:Op donderdag 15 december 2011 23:15 schreef GlowMouse het volgende:
Schrijf gewoon COUNT(*), zet een index op order_content.product_id en kijk naar ansi style joins
Dat is inderdaad een goede oplossingquote:Op woensdag 14 december 2011 10:13 schreef _Flash_ het volgende:
Ik vind het maar een riskante methode. Kom je niet in de problemen als er bijvoorbeeld meerdere mensen tegelijk willen inloggen, de processorkracht verdeeld wordt over die berekeningen en ze dus allemaal de juiste diepte niet halen? Soort van oplossing is natuurlijk wel om het aantal gebruikte loopjes ook in de tabel op te slaan, dan hoef je niet met die factor anderhalf te werken ;-)
Ik zit met de aanpassingen nog steeds op een query van 57 seconden. Ik heb alleen de ANSI join nog niet gedaanquote:Op vrijdag 16 december 2011 08:34 schreef Swetsenegger het volgende:
[..]
ANSI ken ik alleen van BBS systemen, glowmouse ;-) Ik ga er mee aan de slag en hou jullie op de hoogte.
order_content.product_id had ik ondertussen een index opgezet maar dat helpt niet echt.
Dat hij een manier zoekt om iedereen aan een andere willekeurige persoon te koppelen.quote:
Oh zo. Maak gewoon een resultset op basis van alle id`s van de gebruikers, minus je eigen, en laat hem daar 1tje van kiezen?quote:Op vrijdag 16 december 2011 20:56 schreef Pizzalucht het volgende:
[..]
Dat hij een manier zoekt om iedereen aan een andere willekeurige persoon te koppelen.
Je hebt 5 personen, en iedereen is aan iemand gekoppeld, maar niet aan zichzelf.
Hoe doe je dat het beste, proberen totdat je de goede combi hebt, of is daar een soort algoritme voor.
Dat is zijn vraag.
niet pas trekken als iemand de url aanroept, of bij het een na laatste loodje zorgen dat je niet in een foute situatie komtquote:Op vrijdag 16 december 2011 21:15 schreef das_phantom het volgende:
Ter info. Ik heb iedereen de url gegeven. Iedereen trekt het lootje wanneer diegene wil. De persoon selecteert zijn eigen naam en het systeem bekijkt dan in de database wie er nog in zit, en daaruit kiest hij de naam <> eigen naam. Als er nog maar een naam inzit en die is van diegene zelf, dan gaat het fout.
Wat nou als randomizen van personen dezelfde lijst oplevert als je lijst waar je aan gaat koppelen? Dan krijgt iedereen zichzelfquote:Op vrijdag 16 december 2011 23:33 schreef ErikNijland het volgende:
Oplossing voor dat lootjes trekken.
Zet de personen in een random volgorde. Bijvoorbeeld:
edacb
En elke persoon krijgt de volgende persoon in de array:
e krijgt d
d krijgt a
a krijgt c
c krijgt b
en bij b is er geen volgende daarom krijgt hij de eerste uit de array: e
zo; en nu weekend
Iemand nog een idee?quote:Op vrijdag 16 december 2011 17:47 schreef Swetsenegger het volgende:
[..]
Ik zit met de aanpassingen nog steeds op een query van 57 seconden. Ik heb alleen de ANSI join nog niet gedaan
Het is niet zo dat hij 2 lijsten gaat koppelen. Hij heeft 1 lijst met personen a,b,c,d en e.quote:Op zaterdag 17 december 2011 11:24 schreef Pakspul het volgende:
[..]
Wat nou als randomizen van personen dezelfde lijst oplevert als je lijst waar je aan gaat koppelen? Dan krijgt iedereen zichzelf
Ik zou een functie (class liever) maken die bijhoudt welke personen meedoen, random persoon toewijst aan iemand en daarbij rekening houdt dat het niet persoon is waar die aan toe wordt gewezen.
1 2 3 4 5 6 7 | SELECT produkten.*, count(*) as productcount FROM produkten, order_content JOIN orders on (orders.order_id=order_content.order_id) WHERE produkten.product_id = order_content.product_id AND produkten.product_menu IS NOT NULL AND produkten.product_menu<>0 AND orders.wishlist=0 AND orders.activated=1 AND orders.orderdate between ('2011-01-01 0:0:0') AND ('2012-01-01 0:0:0') GROUP BY produkten.product_id ORDER BY productcount DESC LIMIT 0, 5 |
quote:Op zaterdag 17 december 2011 19:13 schreef GlowMouse het volgende:
twee join stijlen door elkaar, lelijk hoor
1 2 3 4 5 6 7 8 | SELECT produkten.*, count(*) as productcount FROM order_content JOIN orders on (orders.order_id=order_content.order_id) JOIN produkten on (produkten.product_id=order_content.product_id) WHERE produkten.product_id = order_content.product_id AND produkten.product_menu IS NOT NULL AND produkten.product_menu<>0 AND orders.wishlist=0 AND orders.activated=1 AND orders.orderdate between ('2011-01-01 0:0:0') AND ('2012-01-01 0:0:0') GROUP BY produkten.product_id ORDER BY productcount DESC LIMIT 0, 5 |
Deze query draait in 37ms, mijn eerste zonder ANSI join in 57 seconden.quote:Op zaterdag 17 december 2011 19:34 schreef GlowMouse het volgende:
Je WHERE is nog te uitgebreid. Deze query zou ook niet sneller draaien dan de eerste.
1 2 3 4 5 6 7 8 | SELECT produkten.*, count(*) as productcount FROM order_content JOIN orders on (orders.order_id=order_content.order_id) JOIN produkten on (produkten.product_id=order_content.product_id) WHERE produkten.product_menu IS NOT NULL AND produkten.product_menu<>0 AND orders.wishlist=0 AND orders.activated=1 AND orders.orderdate between ('2011-01-01 0:0:0') AND ('2012-01-01 0:0:0') GROUP BY produkten.product_id ORDER BY productcount DESC LIMIT 0, 5 |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |