Klein foutje in zoekmachine

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fester Splinter

Fester Splinter

29/12/2017 11:06:44
Quote Anchor link
Beste forumleden,

Ik heb een zoekfunctie op mijn website.
Maar sinds ik een ssl certificaat heb werkt de zoekfunctie niet goed meer.
Altans de resultaten verschijnen pas als ik de pagina eenmaal herlaad.
Ik ben een noob op gebied van javascript maar misschien wil iemand van jullie mij helpen.
De javascriptcode heb ik van de volgende website gedownload:
zoekmachine
Alleen werkt het forum op deze site helaas niet meer.

De code ziet er als volgt uit:
z_input.html :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<script language="JavaScript" type="text/javascript">
    veld = null;
    function EnterOpvangen(veld, event) {
    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
        if (keyCode == 13) {
                if (veld == z_form.elements[0])
                {search_form(z_form)}
                return false;}
        else return true;}    
   </script>
<input id="invoer" type="text" name="d" onkeypress="return EnterOpvangen(this, event)" value=""><br>
<input id="reset" type="reset" value="delete all">
<input id="button" type="button" value="search" name="search button" onClick="search_form(z_form)">


z_form.js :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
var results_location = "z_output.php";
function search_form(z_form) {
   if (z_form.d.value.length > 0) {
       document.cookie = "d=" + escape(z_form.d.value);
       window.location = results_location;}}


z_data.js :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
var sn = 0;
var s = new Array();

       // VOORBEELD -----------------------------------------------------------------------------------------------------------
s[sn++] =   /* AFBEELDING * /   '<img src="" alt="">^'+
       /* URL * /       '^<!-- leeg -->^'+
       /* ZOEKWOORDEN */       'zoek,woorden';
//hieronder niets wijzigen
var include_num = 0; // resultaten nummeren
var bold = 1; // vet weergeven
var cookies = document.cookie;
var p = cookies.indexOf("d=");
if (p != -1) {
   var st = p + 2;
   var en = cookies.indexOf(";", st);
   if (en == -1) {
       en = cookies.length;}
   var d = cookies.substring(st, en);
   d = unescape(d);}
var od = d;var m = 0;
if (d.charAt(0) == '"' && d.charAt(d.length - 1) == '"') {
   m = 1;}
var r = new Array();
var co = 0;
if (m == 0) {
   var woin = new Array();
   var w = d.split(" ");
   for (var a = 0; a < w.length; a++) {
       woin[a] = 0;
       if (w[a].charAt(0) == '-') {
           woin[a] = 1;}}
   for (var a = 0; a < w.length; a++) {
       w[a] = w[a].replace(/^\-|^\+/gi, "");}
   a = 0;
   for (var c = 0; c < s.length; c++) {
       pa = 0;
       nh = 0;
       for (var i = 0; i < woin.length; i++) {
           if (woin[i] == 0) {
               nh++;
               var pat = new RegExp(w[i], "i");
               var rn = s[c].search(pat);
               if (rn >= 0) {
                   pa++;} else {pa = 0;}}
           if (woin[i] == 1) {
               var pat = new RegExp(w[i], "i");
               var rn = s[c].search(pat);
               if (rn >= 0) {
                   pa = 0;}}}
       if (pa == nh) {
           r[a] = s[c];
           a++;}}
   co = a;}
if (m == 1) {
   d = d.replace(/"/gi, "");
   var a = 0;
   var pat = new RegExp(d, "i");
   for (var c = 0; c < s.length; c++) {
       var rn = s[c].search(pat);
       if (rn >= 0) {
           r[a] = s[c];
           a++;}}
   co = a;}
function return_query() {
   document.z_form.d.value = od;}
function num_jscript() {
   document.write(co);}
function out_jscript() {
   if (co == 0) {
       document.write('<b>Use other keywords or<br>');
       document.write('use more keywords or<br>');
       document.write('use cominations like:<br>');
       document.write('color of file, type of file, topic of file.<br>');
       document.write('and try again</b>');
       return;}
   for (var a = 0; a < r.length; a++) {
       var os = r[a].split("^");
       if (bold == 1 && m == 1) {
           var br = "<b>" + d + "</b>";
           os[2] = os[2].replace(pat, br);}
       if (include_num == 1) {
           document.write(a + 1, '. <a class="result" href="', os[1], '">', os[0], '</a>', os[2]);}
else {document.write('<a class="result" href="', os[1], '">', os[0], '</a>', os[2]);}}}


z_output.html :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<b><i>There were <script language="JavaScript1.3" type="text/javascript">num_jscript()</script> results found!</i></b>
  
<script language="JavaScript1.3" type="text/javascript">out_jscript()</script>


Ik hoop dat iemand mij kan helpen
Gewijzigd op 29/12/2017 12:12:07 door Fester Splinter
 
PHP hulp

PHP hulp

24/04/2024 02:12:49
 
- Ariën  -
Beheerder

- Ariën -

29/12/2017 11:29:57
Quote Anchor link
Kan je de code tussen code-tags zetten? Dat maakt het wat beter leesbaarder.
Zelf vermoed ik dat er sprake is van 'mixed content' en dat je het pad naar je JS-bestand moet voorzien van een // als protocol. Dan wordt er gekeken of deze via HTTP of HTTPS wordt ingeladen.
Gewijzigd op 29/12/2017 11:32:16 door - Ariën -
 
Fester Splinter

Fester Splinter

29/12/2017 12:38:51
Quote Anchor link
Bedankt voor je reactie Ariën,

Hoe zou zo'n pad er dan uit moeten zien? Moet ik die // voor het pad plaatsen? want dat heb ik geprobeerd maar dan vind ie het js bestand niet meer.
Ik heb het ook geprobeerd met een absoluut pad. Dus https://pad/jsbestand.js maar hiermee is het nog steeds niet opgelost.

Bij mixed content verschijnt er meestal een uitroeptekentje bij het groene slotje in de url balk. Dat is nu ook niet het geval.
 
- Ariën  -
Beheerder

- Ariën -

29/12/2017 12:48:02
Quote Anchor link
Wel apart.
Heb je een 'testcase' online staan?
 
Fester Splinter

Fester Splinter

29/12/2017 14:41:35
Quote Anchor link
Ik heb het voorlopig met een extra button die de pagina herlaad opgelost.
Hier is de url naar de zoekmachine:
https://background-tiles.com/search.php
 
Thomas van den Heuvel

Thomas van den Heuvel

29/12/2017 14:47:11
Quote Anchor link
Quote:
Laatste aanpassingen: 05.08.2005

Misschien werkt dit alles voor wat je er mee wilt bereiken, maar wellicht wordt/is het tijd om over een nieuwe oplossing na te denken die wellicht ook wat gebruiksvriendelijker is (en niet afhankelijk van JS is)?
 
Rob Doemaarwat

Rob Doemaarwat

29/12/2017 14:54:57
Quote Anchor link
Het gaat fout op de regel
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(veld == z_form.elements[0])
Het 1e element in het form (met index 0) is namelijk de fieldset daarboven, en dus never nooit het "veld". Maar waarom controleer je dit hier? Deze functie is toch alleen maar gebonden aan dat "invoer" veld? Dan kun je deze controle net zo goed weglaten.
 
Fester Splinter

Fester Splinter

29/12/2017 15:37:09
Quote Anchor link
Bedankt voor je reactie Rob Doemaarwat,

Ik heb die controle eruit gehaald maar het probleem is nog niet opgelost.
Wat ik vergeten ben te vermelden is dat de zoekmachine wel goed werkt in localhost.
Gewijzigd op 29/12/2017 15:43:21 door Fester Splinter
 
Rob Doemaarwat

Rob Doemaarwat

29/12/2017 15:45:26
Quote Anchor link
Volgens mij heb je iets te grof gesnoeid, want de hele functie "EnterOpvangen()" is nu weg. Je had alleen die if(...) regel weg moeten halen (en de evt. sluitende accolade).
 
Fester Splinter

Fester Splinter

29/12/2017 16:21:49
Quote Anchor link
Ik had het eerst geprobeerd zoals jij het zei maar dit had geen effect.
Ik heb de functie EnterOpvangen() er maar helemaal uitgehaald omdat deze niet werkte.
 
Rob Doemaarwat

Rob Doemaarwat

29/12/2017 19:00:35
Quote Anchor link
Nou, zet 'm dan maar weer terug, want nu hebben we niks meer om op te schieten.
 
Fester Splinter

Fester Splinter

30/12/2017 12:19:03
Quote Anchor link
Oké Rob,
Ik heb de EnterOpvangen() functie weer terug geplaatst.
de regels: 'if (veld == z_form.elements[0])
{search_form(z_form)}'
heb ik niet meer terug geplaatst zoals je zei.
 
- Ariën  -
Beheerder

- Ariën -

03/01/2018 13:15:14
Quote Anchor link
En werkt het nu?
 
Fester Splinter

Fester Splinter

03/01/2018 13:17:55
Quote Anchor link
Deze reactie is gewijzigd!

Helaas werkt het nog niet in chrome en edge.
wel in firefox.
Gewijzigd op 03/01/2018 13:59:11 door Fester Splinter
 
- Ariën  -
Beheerder

- Ariën -

03/01/2018 13:22:21
Quote Anchor link
Krijg je geen syntax-error? In dat geval is je code gewoon fout.
Aan SSL kan het niet liggen, tenzij je iets via HTTP in zou laden op HTTPS, maar dat lijkt mij niet het geval.

Als ik op 'e' zoek krijg ik eerst een me,ding dat er niks gevonden is, en daarna als ik opnieuw zoek wel. dan lijkt het probleem mij meer in je PHP-script. Maar waarom gebruik je geen GET voor je zoekopdracht? Dat is een stuk gebruikelijker bij zoekopdrachten.
Gewijzigd op 03/01/2018 13:25:08 door - Ariën -
 
Fester Splinter

Fester Splinter

03/01/2018 13:57:59
Quote Anchor link
Ik snap er niks meer van.
Het werkt wel in firefox maar niet in ms edge of chrome.
In localhost werkt het wel in alle browsers.

Quote:
Krijg je geen syntax-error? In dat geval is je code gewoon fout.
Aan SSL kan het niet liggen, tenzij je iets via HTTP in zou laden op HTTPS, maar dat lijkt mij niet het geval.

Als ik op 'e' zoek krijg ik eerst een me,ding dat er niks gevonden is, en daarna als ik opnieuw zoek wel. dan lijkt het probleem mij meer in je PHP-script. Maar waarom gebruik je geen GET voor je zoekopdracht? Dat is een stuk gebruikelijker bij zoekopdrachten


Beste Ariën, ik ben geen programmeur. Ik kan hoogstens een beetje knippen en plakken.
In firefox werkt het nu wel maar het werkt nog niet in ms edge en chrome.
Ik krijg geen syntax error.
Gewijzigd op 03/01/2018 14:00:01 door Fester Splinter
 
- Ariën  -
Beheerder

- Ariën -

03/01/2018 14:06:32
Quote Anchor link
Het script waar je heen linkt is een script van vier jaar oud, of misschien wel ouder.
Waarom zou je het niet geheel in PHP oplossen, en hoogstens JavaScript voor een validatie of hulp bij het invullen van het veld.

De vraag is eigenlijk: Hoe en waar wordt er gezocht?
Gewijzigd op 03/01/2018 14:13:37 door - Ariën -
 
Fester Splinter

Fester Splinter

03/01/2018 19:08:39
Quote Anchor link
De reden dat ik deze zoekmachine gebruik is dat deze zoekmachine precies naar mijn zin werkt.
Ik kan zelf de pagina's bepalen waar naar gezocht kan worden, ik kan zelf de zoekwoorden bepalen per pagina en ik kan de resultaten met afbeeldingen weergeven.
Zo ziet de data (array) eruit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
var sn = 0;
var s = new Array();
s[sn++] =   /* AFBEELDING * /   '<img src="" alt="">^'+
            /* URL * /       'https://url-naar-pagina-afbeelding-1^<!-- leeg -->^'+
            /* ZOEKWOORDEN */       'zoek,woorden';
s[sn++] =   /* AFBEELDING * /   '<img src="" alt="">^'+
            /* URL * /       'https://url-naar-pagina-afbeelding-2^<!-- leeg -->^'+
            /* ZOEKWOORDEN */       'zoek,woorden';
// etc...

Met behulp van de zoekmachine doorzoekt ie de array en geeft alleen de afbeeldingen weer waar de gezochte zoekwoorden staan.

Ik heb de zoekmachine nu verplaatst naar een andere website waar ik geen ssl certificaat heb. Hier werkt ie wel goed dus het moet iets te maken hebben met het certificaat of https.

Tijdelijke locatie zoekmachine:
zoekmachine
Gewijzigd op 03/01/2018 19:15:14 door Fester Splinter
 
- Ariën  -
Beheerder

- Ariën -

03/01/2018 19:38:13
Quote Anchor link
Is het juist niet onhandig dat je steeds je data-array in JavaScript steeds moet aanpassen? Een typfout en je resultaten doen niet meer wat ze moeten doen.

Ik stel toch in op een pad, als het op HTTPS niet werkt.
Maar misschien is het zinvoller om een modernere zoekmachine te maken.
Gewijzigd op 03/01/2018 19:38:40 door - Ariën -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.