Jump to content
xt:Commerce Community Forum

gswkaiser

Members
  • Content Count

    269
  • Joined

  • Last visited

About gswkaiser

  • Rank
    Erfahrener Benutzer
  1. Ich bin heute auf einen verbl?ffenden Effekt gestossen, der mich docch sehr bedenklich stimmt. Zwecks Beweissicherung habe ich den kompletten Inhalt eines osCommerce-basierende Shops mit einer daf?r geeigneten Software (WinHTTrack, http://www.httrack.com ) auf meinen Rechner ?berspielt. Hat auch alles wunderbar funktioniert (alle Ergebnisse der PHP-Programme werden als HTML gespeichert, und man lokal ganz so durch den Shop navigieren wie man das online machen w?rde. Clever gel?st.) Zu meiner gr??ten Verbl?ffung landeten aber auch einige 100 Shopping-Cart-Inhalte auf dem Rechner. Im Moment gehe ich davon aus, dass ich damit den kompletten ?berblick ?ber die Bestellvorg?nge des Shops habe! Ich meine, dass wir das mal ganz schnell untersuchen m?ssen, da ich ungern jedem Einblick in meine Gesch?fte geben m?chte. Ein erster Versuch, das Verhalten zu erkl?ren, hat noch kein Ergebnis gebracht. Also, alle xxCommerce- und PHP-Spezies, an die Arbeit. Das Ganze scheint ?ber "shopping_cart.php" ausgegeben zu werden.
  2. Davon w?rde ich erst einmal die Finger lassen. Im aktuellen ct-Magazin ist ein Artikel ?ber Google Analytics. Ergebnis: das verst?sst so ziemlich gegen alle europ?ischen und deutschen Datenschutzvorschriften, und haftbar daf?r ist nat?rlich der Shopbetreiber.
  3. Es ist immer wieder interessant zu sehen, was f?r festgef?gte Meinungen doch manchmal Leute haben, die gar nicht wissen k?nnen, wie sich etwas konkret verh?lt. Und Tsch?s....
  4. Mal wieder ein Status-Update. Die Arbeit schreitet weiter voran, die Online-Validierung ist jetzt auch so weit fertig. Es k?nnen validiert werden: Vorname/Geschlecht (Von "Aafke (weiblich)" bis "Z?mr?t (weiblich)") F?r D-A-CH: PLZ (mit automatischem setzen von Stadt (und Bundesland f?r D), wenn die PLZ gefunden wurde) BLZ (mit automatischem setzen der Bank, wenn die BLZ gefunden wurde) F?r D: Pr?fen der Kontonummer auf G?ltigkeit anhand des Pr?fziffernverfahrens der jeweiligen Bank. F?r alle Online-Validierungen gilt: Werden f?r die eingegebenen Werte mehrere Eintr?ge gefunden (man kann auch Teile eines Begriffs eingeben), wird unter dem betreffenden Feld eine Auswahlbox mit den gefundenen Alternativen angezeigt, aus denen dann die richtige gew?hlt werden kann. (Im Regelbetrieb wird man das tunlichst vermeiden, aber derzeit kann man sich alle 46.431 Vornamen, 19.241 BLZ und 26.564 PLZ auf diese Art zur Auswahl anbieten lassen. (Da hat der Browser doch ein paar Sekunden zu tun, um diese Auswahlboxen in die Seite einzubauen.) Im Regelbetrieb wird f?r die Eingabe eine Mindestanzahl einzugebender Zeichen vorgeschrieben, um die Auswahlm?glichkeiten zu reduzieren.) Fehler und Hinweise werden ?ber die gewohnte WINDOWS-Messagebox ("alert" in Javascript) mitgeteilt. Als kleine Spielerei (um die M?glichkeiten des Verfahrens zu testen) ist es auch vorgesehen, dass bei der ?nderung des Landes in der Kundendatenmaske die Bundesl?nder des jeweiligen Landes im "Bundesland"-Feld erscheinen, bzw. das ganze Bundesland-Feld entfernt wird, wenn es keine Bundesl?nder gibt. Validiert wird auch die "Schnellkauf"-Funktion, wo entweder ein Fehler angezeigt wird ("Artikel-Nr. falsch", "Produkt ausverkauft" u.?.), oder der Warenkorb aktualisiert wird. Alles also so, wie man es von lokalen Anwendungen ?blicherweise gewohnt ist Welche Funktionen sind denn noch f?r eine Online-Validierung interessant? (Die Preis- und Warenkorb-Aktualisierung bei der Attribut-Auswahl w?re m.E. noch ein guter Kandidat daf?r.) ====================================================================== Implementiert ist auch etwas, was ich "sticky cart" getauft habe, also ein Warenkorb, der beim Scrollen auf einer Kategorie-Produkt-Seite am rechten Rand "angeklebt" (deshalb "sticky") und sichtbar bleibt. (Mich jedenfalls hat das immer gest?rt, dass ich beim Einkauf nie den Warenkorb sehen konnte, wenn dieser aus dem Bildfeld gescrolled war. Mit AJAX kann man diesen jetzt sehr sch?n immer sichtbar und aktuell halten.) ====================================================================== Offene Probleme: Noch ungel?st ist das Problem, dass die normale Browser-Historie keine G?ltigkeit mehr hat, da der ganze AJAX-Verkehr am Browser vorbei l?uft. Aber so langsam bekomme ich einen Plan, wie man das l?sen k?nnte... Wenn f?r die Installation der "SSL"-Verkehr definiert ist, muss die AJAX-Anwendung von Anfang an ?ber das "https"-Protokoll abgewickelt werden. Das f?r den AJAX-Verkehr verwendete XMLHTTP-Objekt aller Browser erlaubt es n?mlich nicht, dass eine unsichere Seite eine sicher aufruft. ====================================================================== Der ganze mittlerweile vorhandene Komfort hat nat?rlich auch seinen Preis: das xtc/AJAX-Javascript das den ganzen AJAX-Verkehr und den lokalen Teil der Validierung abwickelt, hat mittlerweile 1.850 Zeilen (der Lesbarkeit wegen allerdings gro?z?gig formatierten) Code. Das ist aber nicht weiter tragisch, da der ja nur einmal beim Start der Anwendung geladen wird, und bei den einzelnen Programmschritten jeweils immer nur kleine Teile daraus ben?tigt werden. Die xtc/AJAX-Entwicklung wird sicher noch etwas Zeit ben?tigen, aber mir pers?nlich gef?llt das xtc/AJAX-Konzept immer besser.
  5. Das ist einigerma?en unverst?ndlich. Aber nach dem, was ich daraus interpretiere, wird das wohl nix! Die ganzen (Warenkorb-)-Funktionen von xtc erwarten zwingend, dass die Produkt in der xtc-Datenbank enthalten sind. Die einfachere L?sung d?rfte es sicher sein, die offenbar existierende Einkausl?sung um einen Einkaufskorb zu erweitern.
  6. Noch was vergessen! Eine erste online direkt-Validierung ist auch implementiert. Wenn man im Feld Schnellkauf z.B. die Artikel-Nr. 1111 eingibt, erh?lt man die Meldung, dass das Produkt derzeit ausverkauft ist 7777 eingibt, erh?lt man die Meldung, dass das Produkt nicht existiert 1046 eingibt, wird das Produkt dem Warenkorb hinzugef?gt.
  7. Eine Status-Update. xtc/AJAX l?uft jetzt auch auf dem Online-Server mit Firefox.
  8. Das geht ?ber die "includes/config.php" und die "admin/includes/config.php"
  9. Mir f?llt auf, dass ich neuerdings bei Posting, bei denen ich die Option "EMail-Benachrichtigung bei eingehenden Antworten" gesetzt habe, ich keine solchen eMails bekomme. Bei ?lteren Postings funktioniert das noch. Geht das nur mir so?
  10. Es gibt eine neue xtc2/AJAX-Variante online unter http://www.seifenparadies.de/ajax_test/index.php . Die ist schon recht vollst?ndig, auch was die Verwendung von Formularen betrifft (Warenkorb etc.) Was auch implementiert ist, ist der "wandernde Warenkorb", den finde ich echt cool. Wenn der Warenkorb gef?llt ist, und der statische Warenkorb aus dem Sichtfeld gescrolled wird, wird dieser angezeigt, so dass man auch noch am Ende der Produktseite einen Warenkorb sieht. Das funktioniert z.Zt. nur noch mit dem IE (ich hatte das heute aber auch schon im Firefox gesehen, muss da noch mal nachschauen). Wie ich gerade festsellen musste, gibt es noch ein Problem mit unserem SSL-Server, das XMLHTTPRequest-Objekt bekommt da einen Fehler beim Zugriff. Also alles was den Bestellvorgang betrifft ist daher auf dem online-Server noch nicht machbar, da das ?ber SSL abgewickelt wird. (Auf dem lokalen Server funktioniert das problemlos.)
  11. Eine neuer Status-Update. (Ich habe einen neuen Thread er?ffente, weil der erste schon etwas un?bersichtlich war.) Die Arbeit an xtc/AJAX ruhte etwas, geht aber wieder weiter. Das Form-Handling auf AJAX-Basis hatte sich als ziemliches Problem herausgestellt, vor allem auch deshalb, weil in einigen xtc-Formularen ein (verstecktes) Feld "action" verwendet wird, um die auszuf?hrende Option zu ?bergeben. Im nicht Nicht-AJAX-Betrieb st?rt das nicht weiter, aber da ich bei AJAX mir ja den Formular-Inhalt und die Zieladresse selbst auslesen muss, gab es das Problem, dass dieser Feldname "action" mit dem Attribut "action" des Formulars (also die Zieladresse der Daten) in Konflikt geriet. Beim Auslesen des "action"-Attributes des Formulares in Javascript wurde daher immer das Feld "action" als Objekt zur?ckgeliefert. (Das hat einige Zeit gedauert, bis mir das klar wurde...) Aber mittlerweile habe ich das mit den Formularen auch so weit im Griff. Apropos Javascript: Das Javascript-Modul f?r den AJAX-Support hat mittlerweile doch schon ca. 800 Zeilen erreicht... Darin enthalten ist aber auch schon der Code f?r eine AJAX-basierte intelligente Feldvalidierung, die ich mir auch vorgenommen habe, und auch der Code f?r einen verschiebbaren Warenkorb (wenn die Produktliste auf dem Bildschirm nach unten verschoben wird, soll ein Warenkorb mitwandern, damit man sieht, was man so bestellt). Die Feldvalidierung ist mit Daten in der DB hinterlegt und wird folgendes leisten: (Allen Funktionen gemeinsam ist, dass, wenn es f?r eine Eingabe mehrere Datens?tze gibt in der Datenbank gibt, diese Optionen in einer Auswahlbox unter dem Feld zur Auswahl angeboten werden. Man kann also durchaus nur Teile des Feldes (Plz, Blz) eingeben, und erh?lt dann die daf?r zutreffenden Optionen zur Auswahl.) Pr?fung der Vornamen - auf richtige Schreibweise und ?bereinstimmung von Namensgeschlecht (Herr Ingrid z.B. w?rde damit angemeckert). (Diese DB-Tabelle hat ca. 45.000 Eintr?ge, mit Namen aus aller Welt) Pr?fung der Postleitzahl (D-A-CH) - auf Existenz. Wird Sie gefunden, wird auch die Stadt und das Bundesland (f?r "D") im Formular gleich mit aktualisiert, sonst erfolgt eine Fehlermeldung. (Diese DB-Tabelle hat ca. 26.500 Eintr?ge) Pr?fung der Bankleitzahl - auf Existenz. Wird Sie gefunden, wird auch der Bankname im Formular gleich mit aktualisiert, sonst erfolgt eine Fehlermeldung. Pr?fung der Kontonummer (f?r "D") - auf Konformit?t mit den Pr?fziffernverfahren der Banken. Damit kann man die formale Richtigkeit der Kontonummern pr?fen. (Diese DB-Tabelle hat ca. 8.500 Eintr?ge) Der PHP-Teil dieser Validierung ist so weit fertig, der Javascript-Teil der Validierung muss noch ?berarbeitet werden. Aber das sieht schon sehr gut aus... ================================================================ Ich habe auch die Notwendigkeit zur Neuberechnung diverser Boxen weiter reduziert, indem diese nur dann angezeigt werden, wenn sie ben?tigt werden. Die Navigationsbox z.B. wird nur noch angezeigt, wenn eine Navigation stattgefunden hat usw.. Da kann man doch noch einiges reduzieren. ================================================================ Ich hoffe, im Laufe der Woche eine neue Version online stellen zu k?nnen, die auch das Formular-Handling nach AJAX-Art vollst?ndig abdeckt.
  12. Ich habe in einer Kategorie x-Artikel. In dieser Kategorie gibt es weitere Unterkategorien, die aber, zur zus?tzlichen Klassifizierung der x Artikel, nur Kopien der Artikel in der Hauptkatagorie haben. In der Kategoriendarstellung wird nun aber die Summe der Artikel in der Hauptkategorie + der kopierten Artikel in den Unterkategorien angezeigt. Das Problem ist, dass in der Routine xtc_count_products_in_category gnadenlos auch alle Unterkategorien aufsummiert werden, ohne zu pr?fen, ob die Artikel der Unterkategorie nicht schon (durch Kopieren) in der Hauptkategorie enthalten sind. function xtc_count_products_in_category($category_id, $include_inactive = false) { $products_count = 0; $sql_command="select count(distinct p.products_id) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = p2c.products_id and p2c.categories_id = '" . $category_id . "'"; if (!$include_inactive) { $sql_command .= " and p.products_status = '1'"; } $products_query = xtc_db_query($sql_command); $products = xtc_db_fetch_array($products_query); $products_count += $products['total']; $child_categories_query = xtc_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . $category_id . "'"); if (xtc_db_num_rows($child_categories_query)) { while ($child_categories = xtc_db_fetch_array($child_categories_query)) { $products_count += xtc_count_products_in_category($child_categories['categories_id'], $include_inactive); } } return $products_count; } Hat jemand das Problem schon mal gel?st??
  13. Da die Datenbanksicherung mit PHPmyAdmin vergleichsweise lange dauert, und deshalb gerne von der Laufzeit?berwachung der Shared Hoster abgebrochen wird, habe ich mir ein Script entwickelt, dass die Sicherung ?ber das MySQL-Tool mysqldump vornimmt, was wesentlich schneller ist. Danach wird der Dump mit gzip gezipped, und auch gleich zum Download angeboten. Das Script setzt voraus, dass im Root-Verzeichnis das Unterverzeichnis DB_backup existiert. Diese Verzeichnis muss unbedingt ?ber Username/Passwort gesichert werden, damit es niemand sonst ausf?hren kann. Das Script wurde f?r die 1&1-Plattform entwickelt, sollte aber auf allen (UNIX-basierten?) Servern funktionieren. ================================================================ DB_backup/db_save.php <?php // Bitte hier Ihre Daten eintragen $host= 'dbxx.puretec.de'; $user= 'dbxxxxxx'; $pass= 'xxxxxxxx'; $db= 'dbxxxxxxx'; $subdir = "DB_backup"; $path = getenv('DOCUMENT_ROOT')."/".$subdir; $name = "dumpDB.sql.gz"; // Befehl ausf?hren und in Zipfile speichern $command = sprintf( 'mysqldump --opt -h%s -u%s -p%s %s | gzip > %s/' . $name, $host, $user, $pass, $db, $path ); system($command); //Execute dump define('OFFER_DOWNLOAD', true); //Offer download after dump //define('OFFER_DOWNLOAD', false); //Do not offer download after dump if(OFFER_DOWNLOAD) { if($file = fopen($path, 'rb')) { header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); header("Content-Type: application/octet-stream"); header("Content-Length: " .(string)(filesize($path)) ); header('Content-Disposition: attachment; filename="'.$name.'"'); header("Content-Transfer-Encoding: binary\n"); if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) //Special treatment for MS IE { header("Location: ".$name); // Just point to file as new URL } else { $path .= "/".$name; while( (!feof($file)) && (connection_status()==0) ){ print(fread($file, 1024*8)); flush(); } fclose($file); } } else { die("Datei '" . $path . "' kann nicht ge?ffnet werden!"); } }?>
×
×
  • Create New...