Opened 8 months ago

Closed 8 months ago

Last modified 6 months ago

#1982 closed Bug/Fehler (fixed)

Bug in autocomplete

Reported by: noRiddle Owned by: somebody
Priority: normal Milestone: modified-shop-2.0.6.0
Component: Shop Version: 2.0.5.1

Description

Für die Autocomplete-Suche funktioniert die Anwendung von Anführungsstrichen um feste Wortkombinationen zu verwenden nicht (wie in "Hilfe zur erweiterten Suche" beschrieben).
Beispiel: "Testartikel 1"

Das liegt daran, daß

  1. jQuery's serialize() Quotes escaped und urlencode-t und diese in der Funktion xtc_parse_search_string() somit nicht mehr erkannt werden und
  2. an folgendem Code in der /api/autocomplete/autocomplete.php:
    $queryString = xtc_db_input(trim(decode_utf8($_POST['queryString'])));
    

Der Code sollte analog zur advanced_search_result.php in File /includes/extra/default/listing_sql/99_advanced_search_result.php so lauten:

$queryString = stripslashes(trim(urldecode($_POST['queryString'])));

Das Sicherheits-Escapen für MySQL geschieht ja in der /includes/build_search_query.php mittels xtc_db_input().

Wenn das decode_utf8() im jetzigen Code Sinn machen sollte kann man das ja noch mit einfügen. Das sollte dann aber auch in der /includes/extra/default/listing_sql/99_advanced_search_result.php gemacht werden.

Gruß,
noRiddle

*NACHTRAG*
Sollte das so wie es jetzt ist gewünscht sein würde mich das sehr wundern, denn dann hätten die Suggestions aus dem Autocomplete eine nicht besonders aussagekräftige Funktion, da eine Suche die aus mehreren Wörtern besteht ja dann eine "oder"-Suche durchführen, also Ergebnisse für jedes einzelne Wort liefern würde.
Außerdem führt das wissende Nutzen von Anführungsstrichen um Wortkombinationen als Gesamt-String zu suchen zu keinem Ergebnis, was für den Kunden verwirrend sein dürfte.
Die Meisten dürften die Verwendung der Anführungszeichen auch von der Google-Suche kennen. Daß man das als User wenn man das normale Suchfeld benutzt mangels Info evtl. nicht weiß, darf nicht wegmachen, daß es so nicht schlüssig ist wie es momentan ist.

Attachments (0)

Change History (7)

comment:1 Changed 8 months ago by noRiddle

*NACHTRAG 2*
Mir fällt in dem Zusammenhang noch auf, daß xtc_parse_search_string() eine Ungereimtheit haben muß, denn setzt man ein weinzelnes Wort in double quotes, z.B. "testartikel" wird der String genauso übernommen, inkl. quotes und es kommt ein 410 gone Statuscode auf die advanced_search_result.php .

Gruß,
noRiddle

comment:2 Changed 8 months ago by noRiddle

Fix für den Nachtrag ?

if (substr($pieces[$k], -1 ) == '"') {
          // Turn the flag off for future iterations
          $flag = 'off';

          //$objects[] = trim($pieces[$k]);
          $objects[] = trim(str_replace('"', '', $pieces[$k])); //why keep quotes in string ?, with quotes single word will only be found with empty space behind it, 02-2021, noRiddle

Außerdem wird an einigen Stellen preg_replace() benutzt wo ein str_replace() ausreichen würde.

Gruß,
noRiddle

comment:3 Changed 8 months ago by Tomcraft

  • Milestone set to modified-shop-2.0.6.0

comment:4 Changed 8 months ago by GTB

  • Resolution set to fixed
  • Status changed from new to closed

In 13450:

fix #1982 - fix search

comment:5 Changed 6 months ago by noRiddle

Die preg_replace() die mit str_replace() ersetzt werden könnten sind in der 2.0.6.0 noch drin.

Gruß,
noRiddle

comment:6 Changed 6 months ago by Tomcraft

Erstelle dafür bitte ein neues Ticket mit Bezug auf diese hier, denn die Fehler aus dem Ticket wurden korrigiert und das ist kein Fehler mehr, sondern nur noch eine Optimierung.
Danke dir. *thumbs*

Last edited 6 months ago by Tomcraft (previous) (diff)

comment:7 Changed 6 months ago by anonymous

Erledigt: Ticket #2032

Gruß,
noRiddle

Last edited 6 months ago by Tomcraft (previous) (diff)

Add Comment

Modify Ticket

Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.