Loading a new window from local files and accessing it's contentsHow do I create a Java string from the contents of a file?How to create an empty file at the command line in Windows?How to read all files in a folder from Java?How to sparsely checkout only one single file from a git repository?Downloading a file from spring controllersLoad HTML file into WebViewSave and load MemoryStream to/from a fileHow to create a file in Linux from terminal window?“Cross origin requests are only supported for HTTP.” error when loading a local fileOpen link in new tab or window

Do native speakers use ZVE or CPU?

I have accepted an internship offer. Should I inform companies I have applied to that have not gotten back to me yet?

Nested-Loop-Join: How many comparisons and how many pages-accesses?

Absconding a company after 1st day of joining

How would someone destroy a black hole that’s at the centre of a planet?

Commutator subgroup of Heisenberg group.

Why limit to revolvers?

Why is "dark" an adverb in this sentence?

writting to disk and compress with xz at the same time

Can a continent naturally split into two distant parts within a week?

Will it hurt my career to work as a graphic designer in a startup for beauty and skin care?

What are some symbols representing peasants/oppressed persons fighting back?

Crab Nebula short story from 1960s or '70s

Construct a pentagon avoiding compass use

Confused about 誘われて (Sasowarete)

Is `curl something | sudo bash -` a reasonably safe installation method?

Alternatives to using writing paper for writing practice

Project Euler, problem # 9, Pythagorean triplet

Too many spies!

Why hasn't the U.S. government paid war reparations to any country it attacked?

Krazy language in Krazy Kat, 25 July 1936

3D-Plot with an inequality condition for parameter values

What is the closed form of the following recursive function?

Can I activate an iPhone without an Apple ID?



Loading a new window from local files and accessing it's contents


How do I create a Java string from the contents of a file?How to create an empty file at the command line in Windows?How to read all files in a folder from Java?How to sparsely checkout only one single file from a git repository?Downloading a file from spring controllersLoad HTML file into WebViewSave and load MemoryStream to/from a fileHow to create a file in Linux from terminal window?“Cross origin requests are only supported for HTTP.” error when loading a local fileOpen link in new tab or window






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








0















I am setting up a local webpage which shows videos in a HTML5 video tag. I just want to be able to do database search from a PHP request and show the results from which I can click on and show the video I want. The problem I have is that hte videos load WAY faster when loading from a "file:///" link than from the "http://" link. Server works flawlessly when in "HTTP" mode but nothing works in "file:///" mode which is normal as PHP codes only execute on the server side when requested to the server.



I have spent my full day trying soo much stuff. I changed my server to accept CORS, I tried window.open, storing the reference in a variable, local or global but I lose this as soon as I get out of my javascript function. I tried window.open in a function which is called from another function but no matter what I do, the window reference gets lost as soon as I leave the functions, or once the functions have finished. Since my browser is used as my main browser, I do not want to disable the security arround CORS but since my webpage's link comes from "file:///" requesting to "HTTP" on the same computer, CORS blocks me and wants an HTTP request which I can't give.



I have done all the searching for retrieving information from another webpage but I am always stuck with the "same domain" problem. I tried AJAX HTTPRequest, I just have no more solution for this simple problem which finished way more complicated than expected. The initial problem was just my videos not loading fast enough in HTTP mode (The speed difference is extreme, for 10 min videos, I can wait 5-10 seconds to skip through it while as in FILE:/// urls, It's almost instant, no waiting. longer videos of 1h, I can wait up to 20 and 30 seconds while as in file:/// mode, almost instant.) and I had to learn all that Allow cross domains stuff which ended up with no success either. I figure that maybe a few other heads may have better ideas than mine now.



#In my httpd.conf file from Apache
DocumentRoot "e:/mainwebfolder"
Alias "/lp" "d:/whatever"

//////////////////////////////////////
// index.php file that does not contain PHP contents
// window.location.href: file://d:/whatever/index.php
//////////////////////////////////////
<head>
<script src="html/servcom.js" type="text/javascript"></script>
</head>
<video id="vplayer" width="1280" height="720" controls></video>
<div id="search-form">
<input id="srch" name="srch" type="text">
&nbsp;<button class="bbut" onclick="ServInfo('search-results','http://127.0.0.1/lp/html/db.php','mode=s','search-form');">Search</button>
</div>
<div id='search-results'></div>

<script>
var dplay = document.getElementById("vplayer");
ShowVideo('MyVideo.mp4');
function ShowVideo (vidUrl)
dplay = document.getElementById("vplayer");
dplay.src = vidUrl;
dplay.load;

</script>

//////////////////////////////////////
// Now this is in my javascript file servcom.js
//////////////////////////////////////
var win_ref = -1;

function ServInfo(pop_field_id,web_page,params="",form_id="",exec_string = "") eobj == null) return;

win_ref = window.open(swpage+sparams,"_blank");
//////////////////////////////////////
// right here win_ref will never be available once the code from this function has been finished executing although the variable is global. The problem starts here.
//////////////////////////////////////

// Execute a string if a user defined one
if (exec_string != "") eval(exec_string);


// Build a parameter string with div fields of type text, hidden or password
function GetDivFields(div_id)

var ediv = document.getElementById(div_id);
var elem = ediv.children;
var retval = "";
var ssep = "";

for (var i = 0; i < elem.length; i++)

return retval;


//////////////////////////////////////
// And this is a brief overview of my db.php page
//////////////////////////////////////
<?php // Search Database code ?>
<div id="output"></div>
<script>
document.getElementById('output').innerHTML = "<?php echo $search_results; ?>";
// I actually want to retrieve the info from this div element once it has been populated from the initial page that called window.open for this page. BUT again. window.opener becomes empty once my initial window.open script finishes.
</script>


Access my newly loaded page's "output" div innerHTML OR loading videos through local HTTP as fast as "FILE:///".










share|improve this question




























    0















    I am setting up a local webpage which shows videos in a HTML5 video tag. I just want to be able to do database search from a PHP request and show the results from which I can click on and show the video I want. The problem I have is that hte videos load WAY faster when loading from a "file:///" link than from the "http://" link. Server works flawlessly when in "HTTP" mode but nothing works in "file:///" mode which is normal as PHP codes only execute on the server side when requested to the server.



    I have spent my full day trying soo much stuff. I changed my server to accept CORS, I tried window.open, storing the reference in a variable, local or global but I lose this as soon as I get out of my javascript function. I tried window.open in a function which is called from another function but no matter what I do, the window reference gets lost as soon as I leave the functions, or once the functions have finished. Since my browser is used as my main browser, I do not want to disable the security arround CORS but since my webpage's link comes from "file:///" requesting to "HTTP" on the same computer, CORS blocks me and wants an HTTP request which I can't give.



    I have done all the searching for retrieving information from another webpage but I am always stuck with the "same domain" problem. I tried AJAX HTTPRequest, I just have no more solution for this simple problem which finished way more complicated than expected. The initial problem was just my videos not loading fast enough in HTTP mode (The speed difference is extreme, for 10 min videos, I can wait 5-10 seconds to skip through it while as in FILE:/// urls, It's almost instant, no waiting. longer videos of 1h, I can wait up to 20 and 30 seconds while as in file:/// mode, almost instant.) and I had to learn all that Allow cross domains stuff which ended up with no success either. I figure that maybe a few other heads may have better ideas than mine now.



    #In my httpd.conf file from Apache
    DocumentRoot "e:/mainwebfolder"
    Alias "/lp" "d:/whatever"

    //////////////////////////////////////
    // index.php file that does not contain PHP contents
    // window.location.href: file://d:/whatever/index.php
    //////////////////////////////////////
    <head>
    <script src="html/servcom.js" type="text/javascript"></script>
    </head>
    <video id="vplayer" width="1280" height="720" controls></video>
    <div id="search-form">
    <input id="srch" name="srch" type="text">
    &nbsp;<button class="bbut" onclick="ServInfo('search-results','http://127.0.0.1/lp/html/db.php','mode=s','search-form');">Search</button>
    </div>
    <div id='search-results'></div>

    <script>
    var dplay = document.getElementById("vplayer");
    ShowVideo('MyVideo.mp4');
    function ShowVideo (vidUrl)
    dplay = document.getElementById("vplayer");
    dplay.src = vidUrl;
    dplay.load;

    </script>

    //////////////////////////////////////
    // Now this is in my javascript file servcom.js
    //////////////////////////////////////
    var win_ref = -1;

    function ServInfo(pop_field_id,web_page,params="",form_id="",exec_string = "") eobj == null) return;

    win_ref = window.open(swpage+sparams,"_blank");
    //////////////////////////////////////
    // right here win_ref will never be available once the code from this function has been finished executing although the variable is global. The problem starts here.
    //////////////////////////////////////

    // Execute a string if a user defined one
    if (exec_string != "") eval(exec_string);


    // Build a parameter string with div fields of type text, hidden or password
    function GetDivFields(div_id)

    var ediv = document.getElementById(div_id);
    var elem = ediv.children;
    var retval = "";
    var ssep = "";

    for (var i = 0; i < elem.length; i++)

    return retval;


    //////////////////////////////////////
    // And this is a brief overview of my db.php page
    //////////////////////////////////////
    <?php // Search Database code ?>
    <div id="output"></div>
    <script>
    document.getElementById('output').innerHTML = "<?php echo $search_results; ?>";
    // I actually want to retrieve the info from this div element once it has been populated from the initial page that called window.open for this page. BUT again. window.opener becomes empty once my initial window.open script finishes.
    </script>


    Access my newly loaded page's "output" div innerHTML OR loading videos through local HTTP as fast as "FILE:///".










    share|improve this question
























      0












      0








      0








      I am setting up a local webpage which shows videos in a HTML5 video tag. I just want to be able to do database search from a PHP request and show the results from which I can click on and show the video I want. The problem I have is that hte videos load WAY faster when loading from a "file:///" link than from the "http://" link. Server works flawlessly when in "HTTP" mode but nothing works in "file:///" mode which is normal as PHP codes only execute on the server side when requested to the server.



      I have spent my full day trying soo much stuff. I changed my server to accept CORS, I tried window.open, storing the reference in a variable, local or global but I lose this as soon as I get out of my javascript function. I tried window.open in a function which is called from another function but no matter what I do, the window reference gets lost as soon as I leave the functions, or once the functions have finished. Since my browser is used as my main browser, I do not want to disable the security arround CORS but since my webpage's link comes from "file:///" requesting to "HTTP" on the same computer, CORS blocks me and wants an HTTP request which I can't give.



      I have done all the searching for retrieving information from another webpage but I am always stuck with the "same domain" problem. I tried AJAX HTTPRequest, I just have no more solution for this simple problem which finished way more complicated than expected. The initial problem was just my videos not loading fast enough in HTTP mode (The speed difference is extreme, for 10 min videos, I can wait 5-10 seconds to skip through it while as in FILE:/// urls, It's almost instant, no waiting. longer videos of 1h, I can wait up to 20 and 30 seconds while as in file:/// mode, almost instant.) and I had to learn all that Allow cross domains stuff which ended up with no success either. I figure that maybe a few other heads may have better ideas than mine now.



      #In my httpd.conf file from Apache
      DocumentRoot "e:/mainwebfolder"
      Alias "/lp" "d:/whatever"

      //////////////////////////////////////
      // index.php file that does not contain PHP contents
      // window.location.href: file://d:/whatever/index.php
      //////////////////////////////////////
      <head>
      <script src="html/servcom.js" type="text/javascript"></script>
      </head>
      <video id="vplayer" width="1280" height="720" controls></video>
      <div id="search-form">
      <input id="srch" name="srch" type="text">
      &nbsp;<button class="bbut" onclick="ServInfo('search-results','http://127.0.0.1/lp/html/db.php','mode=s','search-form');">Search</button>
      </div>
      <div id='search-results'></div>

      <script>
      var dplay = document.getElementById("vplayer");
      ShowVideo('MyVideo.mp4');
      function ShowVideo (vidUrl)
      dplay = document.getElementById("vplayer");
      dplay.src = vidUrl;
      dplay.load;

      </script>

      //////////////////////////////////////
      // Now this is in my javascript file servcom.js
      //////////////////////////////////////
      var win_ref = -1;

      function ServInfo(pop_field_id,web_page,params="",form_id="",exec_string = "") eobj == null) return;

      win_ref = window.open(swpage+sparams,"_blank");
      //////////////////////////////////////
      // right here win_ref will never be available once the code from this function has been finished executing although the variable is global. The problem starts here.
      //////////////////////////////////////

      // Execute a string if a user defined one
      if (exec_string != "") eval(exec_string);


      // Build a parameter string with div fields of type text, hidden or password
      function GetDivFields(div_id)

      var ediv = document.getElementById(div_id);
      var elem = ediv.children;
      var retval = "";
      var ssep = "";

      for (var i = 0; i < elem.length; i++)

      return retval;


      //////////////////////////////////////
      // And this is a brief overview of my db.php page
      //////////////////////////////////////
      <?php // Search Database code ?>
      <div id="output"></div>
      <script>
      document.getElementById('output').innerHTML = "<?php echo $search_results; ?>";
      // I actually want to retrieve the info from this div element once it has been populated from the initial page that called window.open for this page. BUT again. window.opener becomes empty once my initial window.open script finishes.
      </script>


      Access my newly loaded page's "output" div innerHTML OR loading videos through local HTTP as fast as "FILE:///".










      share|improve this question














      I am setting up a local webpage which shows videos in a HTML5 video tag. I just want to be able to do database search from a PHP request and show the results from which I can click on and show the video I want. The problem I have is that hte videos load WAY faster when loading from a "file:///" link than from the "http://" link. Server works flawlessly when in "HTTP" mode but nothing works in "file:///" mode which is normal as PHP codes only execute on the server side when requested to the server.



      I have spent my full day trying soo much stuff. I changed my server to accept CORS, I tried window.open, storing the reference in a variable, local or global but I lose this as soon as I get out of my javascript function. I tried window.open in a function which is called from another function but no matter what I do, the window reference gets lost as soon as I leave the functions, or once the functions have finished. Since my browser is used as my main browser, I do not want to disable the security arround CORS but since my webpage's link comes from "file:///" requesting to "HTTP" on the same computer, CORS blocks me and wants an HTTP request which I can't give.



      I have done all the searching for retrieving information from another webpage but I am always stuck with the "same domain" problem. I tried AJAX HTTPRequest, I just have no more solution for this simple problem which finished way more complicated than expected. The initial problem was just my videos not loading fast enough in HTTP mode (The speed difference is extreme, for 10 min videos, I can wait 5-10 seconds to skip through it while as in FILE:/// urls, It's almost instant, no waiting. longer videos of 1h, I can wait up to 20 and 30 seconds while as in file:/// mode, almost instant.) and I had to learn all that Allow cross domains stuff which ended up with no success either. I figure that maybe a few other heads may have better ideas than mine now.



      #In my httpd.conf file from Apache
      DocumentRoot "e:/mainwebfolder"
      Alias "/lp" "d:/whatever"

      //////////////////////////////////////
      // index.php file that does not contain PHP contents
      // window.location.href: file://d:/whatever/index.php
      //////////////////////////////////////
      <head>
      <script src="html/servcom.js" type="text/javascript"></script>
      </head>
      <video id="vplayer" width="1280" height="720" controls></video>
      <div id="search-form">
      <input id="srch" name="srch" type="text">
      &nbsp;<button class="bbut" onclick="ServInfo('search-results','http://127.0.0.1/lp/html/db.php','mode=s','search-form');">Search</button>
      </div>
      <div id='search-results'></div>

      <script>
      var dplay = document.getElementById("vplayer");
      ShowVideo('MyVideo.mp4');
      function ShowVideo (vidUrl)
      dplay = document.getElementById("vplayer");
      dplay.src = vidUrl;
      dplay.load;

      </script>

      //////////////////////////////////////
      // Now this is in my javascript file servcom.js
      //////////////////////////////////////
      var win_ref = -1;

      function ServInfo(pop_field_id,web_page,params="",form_id="",exec_string = "") eobj == null) return;

      win_ref = window.open(swpage+sparams,"_blank");
      //////////////////////////////////////
      // right here win_ref will never be available once the code from this function has been finished executing although the variable is global. The problem starts here.
      //////////////////////////////////////

      // Execute a string if a user defined one
      if (exec_string != "") eval(exec_string);


      // Build a parameter string with div fields of type text, hidden or password
      function GetDivFields(div_id)

      var ediv = document.getElementById(div_id);
      var elem = ediv.children;
      var retval = "";
      var ssep = "";

      for (var i = 0; i < elem.length; i++)

      return retval;


      //////////////////////////////////////
      // And this is a brief overview of my db.php page
      //////////////////////////////////////
      <?php // Search Database code ?>
      <div id="output"></div>
      <script>
      document.getElementById('output').innerHTML = "<?php echo $search_results; ?>";
      // I actually want to retrieve the info from this div element once it has been populated from the initial page that called window.open for this page. BUT again. window.opener becomes empty once my initial window.open script finishes.
      </script>


      Access my newly loaded page's "output" div innerHTML OR loading videos through local HTTP as fast as "FILE:///".







      file background window local






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 26 at 6:31









      David RichardDavid Richard

      115 bronze badges




      115 bronze badges






















          1 Answer
          1






          active

          oldest

          votes


















          0














          Well, I fanally found a solution. Since this is for local and presentation use only, I could bypass some securities. Basically, doing what we would normally NOT do in a website but all this WITHOUT modifying your webserver config or touching any .htaccess file. Basically, no security restrictions, just a plain old hack that poses no security breaches for your browser or your server.



          To be noted:



          1. 2 different websites exist (so 2 different folders at very different locations), 1 for developpement and serious releases, one for internal and/or presentation purposes.


          2. Every file is local abd inside the presentation folder.


          3. No PHP code can be ran from a "file:///" link.


          4. Access to the mysql database is done through PHP and server is on Apach24


          5. Reading video locally from a "file:///" link are WAY faster than from an "http://" link


          6. Searching needs to be done in MySQL database frm a "http://" link and results need to be displayed on a webpage opened from a "file:///" link.


          7. No changes must be made in the Browser's configuration so disabling CORS is not a solution.


          8. Bypassing cors with methods proposed by many site won't work because of security reasons or because CORS bypass does not accept "file:///" links


          PHP can write files on the server which is where I decided to bypass CORS. Since XML requests through AJAX can be done on the same origin domain an thus, purely in javascript. If a file exists which contains no PHP code AND resides on the same domaine i/e "file:///", the contents can the be read wothout any problems.



          So I simply do the following in my db.php file:



          $s_mode = "";
          $s_text = "";
          $sres = "";

          if (isset($_REQUEST["srch"])) $s_text=$_REQUEST["srch"];
          if (isset($_REQUEST["mode"])) $s_mode=$_REQUEST["mode"];

          if ($s_mode == "s")
          $sres = SearchDB($s_text);
          WriteFile("D:/whatever/my_path/dbres.html",$sres);


          // Writes the contents of the search in a specified file
          function WriteFile($faddress,$fcontents)
          $ifile = fopen($faddress,"w");
          fwrite($ifile,$fcontents);
          fclose($ifile);



          Now using a normal AJAX request, I do 2 things. I opted to use an iframe with a "display:none" style to not bother seeing another tab openup.



          1. Do the actual request which opens the "cross-doamin" link in the iframe WHICH executes my db.php code. I basically open "http://127.0.0.1/whatever/db.php?param1=data&parma2=data" inside my iframe.


          2. Once my search is done and I have the results, my db.php will save an html file with the results as it's contents in my "file:///" direct location's path so: "D:/whatever/my_path/dbres.html".


          I added a new function in my servcom.js. So my new file's contents looks like this:



          // Show page info in another page element or window with parameters (for local use only)
          function ServInfoLocal(dest_frame,web_page,params="",form_id="") iweb == null) return;

          // Add the question mark if there is any parameters to pass
          if (sparams != "") sparams = "?"+sparams;

          // Show results in iframe
          iweb.src = swpage+sparams;



          // AJAX simple HTTP GET request
          function ServInfo(pop_field_id,web_page,params="",form_id="",append_data_to_output = "",exec_string = "",dont_show_results = "") eobj == null) return;

          if (window.XMLHttpRequest)
          // IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp = new XMLHttpRequest();

          else
          // IE6-
          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");


          xmlhttp.onreadystatechange = function()
          if (this.readyState == 4 && this.status == 200)
          // Do not show any results if requested
          if (dont_show_results == "")
          if (append_data_to_output == "y")
          document.getElementById(pop_field_id).innerHTML += this.responseText;

          if (append_data_to_output == "")
          document.getElementById(pop_field_id).innerHTML = this.responseText;


          // Execute a string if a user defined one
          if (exec_string != "")
          eval(exec_string);


          ;
          // Add the question mark if there is any parameters to pass
          if (sparams != "") swpage += "?";

          xmlhttp.open("GET",swpage+sparams,true);
          xmlhttp.send();



          // Build a parameter string with div fields of type text, hidden or password
          function GetDivFields(div_id)

          var ediv = document.getElementById(div_id);
          var elem = ediv.children;
          var retval = "";
          var ssep = "";

          for (var i = 0; i < elem.length; i++)

          return retval;




          Now, my dbres.html file will contain just the div elements and all the information I need to show up in my "file:///" page from which the search request came from. So I simply have this inside my page:



          <div id="search-form" style="color:white;font-weight:bold;">
          <input id="srch" name="srch" type="text">
          &nbsp;<button class="bbut" onclick="ServInfoLocal('iweb','http://127.0.0.1/whatever/html/db.php','mode=s','search-form');">Search</button>
          <button class="bbut" onclick="ServInfo('search-results','dbres.html');">Click here</button>
          </div>

          <div id="search-results">Results here</div>

          <iframe id="iweb" style="display:none;" src=""></iframe>


          For now I have 2 buttons, one for the search and one to show the results from my newly created file. Now, I can show my local videos which will load in my video container with "file:///" source directly without passing through http. I'll make my results display automatic which I will be able to do myself from here on.



          So, if someone on planet earth wants to be able to do cross-domain searches in a MySQL database from a local file ran directly from the Windows explorer, there's not too many solutions, actually, I found none so here is at least one for who would ever need this solution.



          For the curious ones out there, my next step will be to loop my folder until my dbres file is present using another js function. Once my file has been fetched, call another php file which wil destroy the created file and I'll be ready for another database request from my webpage situated in a "file:///" location.






          share|improve this answer






















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55351033%2floading-a-new-window-from-local-files-and-accessing-its-contents%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            Well, I fanally found a solution. Since this is for local and presentation use only, I could bypass some securities. Basically, doing what we would normally NOT do in a website but all this WITHOUT modifying your webserver config or touching any .htaccess file. Basically, no security restrictions, just a plain old hack that poses no security breaches for your browser or your server.



            To be noted:



            1. 2 different websites exist (so 2 different folders at very different locations), 1 for developpement and serious releases, one for internal and/or presentation purposes.


            2. Every file is local abd inside the presentation folder.


            3. No PHP code can be ran from a "file:///" link.


            4. Access to the mysql database is done through PHP and server is on Apach24


            5. Reading video locally from a "file:///" link are WAY faster than from an "http://" link


            6. Searching needs to be done in MySQL database frm a "http://" link and results need to be displayed on a webpage opened from a "file:///" link.


            7. No changes must be made in the Browser's configuration so disabling CORS is not a solution.


            8. Bypassing cors with methods proposed by many site won't work because of security reasons or because CORS bypass does not accept "file:///" links


            PHP can write files on the server which is where I decided to bypass CORS. Since XML requests through AJAX can be done on the same origin domain an thus, purely in javascript. If a file exists which contains no PHP code AND resides on the same domaine i/e "file:///", the contents can the be read wothout any problems.



            So I simply do the following in my db.php file:



            $s_mode = "";
            $s_text = "";
            $sres = "";

            if (isset($_REQUEST["srch"])) $s_text=$_REQUEST["srch"];
            if (isset($_REQUEST["mode"])) $s_mode=$_REQUEST["mode"];

            if ($s_mode == "s")
            $sres = SearchDB($s_text);
            WriteFile("D:/whatever/my_path/dbres.html",$sres);


            // Writes the contents of the search in a specified file
            function WriteFile($faddress,$fcontents)
            $ifile = fopen($faddress,"w");
            fwrite($ifile,$fcontents);
            fclose($ifile);



            Now using a normal AJAX request, I do 2 things. I opted to use an iframe with a "display:none" style to not bother seeing another tab openup.



            1. Do the actual request which opens the "cross-doamin" link in the iframe WHICH executes my db.php code. I basically open "http://127.0.0.1/whatever/db.php?param1=data&parma2=data" inside my iframe.


            2. Once my search is done and I have the results, my db.php will save an html file with the results as it's contents in my "file:///" direct location's path so: "D:/whatever/my_path/dbres.html".


            I added a new function in my servcom.js. So my new file's contents looks like this:



            // Show page info in another page element or window with parameters (for local use only)
            function ServInfoLocal(dest_frame,web_page,params="",form_id="") iweb == null) return;

            // Add the question mark if there is any parameters to pass
            if (sparams != "") sparams = "?"+sparams;

            // Show results in iframe
            iweb.src = swpage+sparams;



            // AJAX simple HTTP GET request
            function ServInfo(pop_field_id,web_page,params="",form_id="",append_data_to_output = "",exec_string = "",dont_show_results = "") eobj == null) return;

            if (window.XMLHttpRequest)
            // IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();

            else
            // IE6-
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");


            xmlhttp.onreadystatechange = function()
            if (this.readyState == 4 && this.status == 200)
            // Do not show any results if requested
            if (dont_show_results == "")
            if (append_data_to_output == "y")
            document.getElementById(pop_field_id).innerHTML += this.responseText;

            if (append_data_to_output == "")
            document.getElementById(pop_field_id).innerHTML = this.responseText;


            // Execute a string if a user defined one
            if (exec_string != "")
            eval(exec_string);


            ;
            // Add the question mark if there is any parameters to pass
            if (sparams != "") swpage += "?";

            xmlhttp.open("GET",swpage+sparams,true);
            xmlhttp.send();



            // Build a parameter string with div fields of type text, hidden or password
            function GetDivFields(div_id)

            var ediv = document.getElementById(div_id);
            var elem = ediv.children;
            var retval = "";
            var ssep = "";

            for (var i = 0; i < elem.length; i++)

            return retval;




            Now, my dbres.html file will contain just the div elements and all the information I need to show up in my "file:///" page from which the search request came from. So I simply have this inside my page:



            <div id="search-form" style="color:white;font-weight:bold;">
            <input id="srch" name="srch" type="text">
            &nbsp;<button class="bbut" onclick="ServInfoLocal('iweb','http://127.0.0.1/whatever/html/db.php','mode=s','search-form');">Search</button>
            <button class="bbut" onclick="ServInfo('search-results','dbres.html');">Click here</button>
            </div>

            <div id="search-results">Results here</div>

            <iframe id="iweb" style="display:none;" src=""></iframe>


            For now I have 2 buttons, one for the search and one to show the results from my newly created file. Now, I can show my local videos which will load in my video container with "file:///" source directly without passing through http. I'll make my results display automatic which I will be able to do myself from here on.



            So, if someone on planet earth wants to be able to do cross-domain searches in a MySQL database from a local file ran directly from the Windows explorer, there's not too many solutions, actually, I found none so here is at least one for who would ever need this solution.



            For the curious ones out there, my next step will be to loop my folder until my dbres file is present using another js function. Once my file has been fetched, call another php file which wil destroy the created file and I'll be ready for another database request from my webpage situated in a "file:///" location.






            share|improve this answer



























              0














              Well, I fanally found a solution. Since this is for local and presentation use only, I could bypass some securities. Basically, doing what we would normally NOT do in a website but all this WITHOUT modifying your webserver config or touching any .htaccess file. Basically, no security restrictions, just a plain old hack that poses no security breaches for your browser or your server.



              To be noted:



              1. 2 different websites exist (so 2 different folders at very different locations), 1 for developpement and serious releases, one for internal and/or presentation purposes.


              2. Every file is local abd inside the presentation folder.


              3. No PHP code can be ran from a "file:///" link.


              4. Access to the mysql database is done through PHP and server is on Apach24


              5. Reading video locally from a "file:///" link are WAY faster than from an "http://" link


              6. Searching needs to be done in MySQL database frm a "http://" link and results need to be displayed on a webpage opened from a "file:///" link.


              7. No changes must be made in the Browser's configuration so disabling CORS is not a solution.


              8. Bypassing cors with methods proposed by many site won't work because of security reasons or because CORS bypass does not accept "file:///" links


              PHP can write files on the server which is where I decided to bypass CORS. Since XML requests through AJAX can be done on the same origin domain an thus, purely in javascript. If a file exists which contains no PHP code AND resides on the same domaine i/e "file:///", the contents can the be read wothout any problems.



              So I simply do the following in my db.php file:



              $s_mode = "";
              $s_text = "";
              $sres = "";

              if (isset($_REQUEST["srch"])) $s_text=$_REQUEST["srch"];
              if (isset($_REQUEST["mode"])) $s_mode=$_REQUEST["mode"];

              if ($s_mode == "s")
              $sres = SearchDB($s_text);
              WriteFile("D:/whatever/my_path/dbres.html",$sres);


              // Writes the contents of the search in a specified file
              function WriteFile($faddress,$fcontents)
              $ifile = fopen($faddress,"w");
              fwrite($ifile,$fcontents);
              fclose($ifile);



              Now using a normal AJAX request, I do 2 things. I opted to use an iframe with a "display:none" style to not bother seeing another tab openup.



              1. Do the actual request which opens the "cross-doamin" link in the iframe WHICH executes my db.php code. I basically open "http://127.0.0.1/whatever/db.php?param1=data&parma2=data" inside my iframe.


              2. Once my search is done and I have the results, my db.php will save an html file with the results as it's contents in my "file:///" direct location's path so: "D:/whatever/my_path/dbres.html".


              I added a new function in my servcom.js. So my new file's contents looks like this:



              // Show page info in another page element or window with parameters (for local use only)
              function ServInfoLocal(dest_frame,web_page,params="",form_id="") iweb == null) return;

              // Add the question mark if there is any parameters to pass
              if (sparams != "") sparams = "?"+sparams;

              // Show results in iframe
              iweb.src = swpage+sparams;



              // AJAX simple HTTP GET request
              function ServInfo(pop_field_id,web_page,params="",form_id="",append_data_to_output = "",exec_string = "",dont_show_results = "") eobj == null) return;

              if (window.XMLHttpRequest)
              // IE7+, Firefox, Chrome, Opera, Safari
              xmlhttp = new XMLHttpRequest();

              else
              // IE6-
              xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");


              xmlhttp.onreadystatechange = function()
              if (this.readyState == 4 && this.status == 200)
              // Do not show any results if requested
              if (dont_show_results == "")
              if (append_data_to_output == "y")
              document.getElementById(pop_field_id).innerHTML += this.responseText;

              if (append_data_to_output == "")
              document.getElementById(pop_field_id).innerHTML = this.responseText;


              // Execute a string if a user defined one
              if (exec_string != "")
              eval(exec_string);


              ;
              // Add the question mark if there is any parameters to pass
              if (sparams != "") swpage += "?";

              xmlhttp.open("GET",swpage+sparams,true);
              xmlhttp.send();



              // Build a parameter string with div fields of type text, hidden or password
              function GetDivFields(div_id)

              var ediv = document.getElementById(div_id);
              var elem = ediv.children;
              var retval = "";
              var ssep = "";

              for (var i = 0; i < elem.length; i++)

              return retval;




              Now, my dbres.html file will contain just the div elements and all the information I need to show up in my "file:///" page from which the search request came from. So I simply have this inside my page:



              <div id="search-form" style="color:white;font-weight:bold;">
              <input id="srch" name="srch" type="text">
              &nbsp;<button class="bbut" onclick="ServInfoLocal('iweb','http://127.0.0.1/whatever/html/db.php','mode=s','search-form');">Search</button>
              <button class="bbut" onclick="ServInfo('search-results','dbres.html');">Click here</button>
              </div>

              <div id="search-results">Results here</div>

              <iframe id="iweb" style="display:none;" src=""></iframe>


              For now I have 2 buttons, one for the search and one to show the results from my newly created file. Now, I can show my local videos which will load in my video container with "file:///" source directly without passing through http. I'll make my results display automatic which I will be able to do myself from here on.



              So, if someone on planet earth wants to be able to do cross-domain searches in a MySQL database from a local file ran directly from the Windows explorer, there's not too many solutions, actually, I found none so here is at least one for who would ever need this solution.



              For the curious ones out there, my next step will be to loop my folder until my dbres file is present using another js function. Once my file has been fetched, call another php file which wil destroy the created file and I'll be ready for another database request from my webpage situated in a "file:///" location.






              share|improve this answer

























                0












                0








                0







                Well, I fanally found a solution. Since this is for local and presentation use only, I could bypass some securities. Basically, doing what we would normally NOT do in a website but all this WITHOUT modifying your webserver config or touching any .htaccess file. Basically, no security restrictions, just a plain old hack that poses no security breaches for your browser or your server.



                To be noted:



                1. 2 different websites exist (so 2 different folders at very different locations), 1 for developpement and serious releases, one for internal and/or presentation purposes.


                2. Every file is local abd inside the presentation folder.


                3. No PHP code can be ran from a "file:///" link.


                4. Access to the mysql database is done through PHP and server is on Apach24


                5. Reading video locally from a "file:///" link are WAY faster than from an "http://" link


                6. Searching needs to be done in MySQL database frm a "http://" link and results need to be displayed on a webpage opened from a "file:///" link.


                7. No changes must be made in the Browser's configuration so disabling CORS is not a solution.


                8. Bypassing cors with methods proposed by many site won't work because of security reasons or because CORS bypass does not accept "file:///" links


                PHP can write files on the server which is where I decided to bypass CORS. Since XML requests through AJAX can be done on the same origin domain an thus, purely in javascript. If a file exists which contains no PHP code AND resides on the same domaine i/e "file:///", the contents can the be read wothout any problems.



                So I simply do the following in my db.php file:



                $s_mode = "";
                $s_text = "";
                $sres = "";

                if (isset($_REQUEST["srch"])) $s_text=$_REQUEST["srch"];
                if (isset($_REQUEST["mode"])) $s_mode=$_REQUEST["mode"];

                if ($s_mode == "s")
                $sres = SearchDB($s_text);
                WriteFile("D:/whatever/my_path/dbres.html",$sres);


                // Writes the contents of the search in a specified file
                function WriteFile($faddress,$fcontents)
                $ifile = fopen($faddress,"w");
                fwrite($ifile,$fcontents);
                fclose($ifile);



                Now using a normal AJAX request, I do 2 things. I opted to use an iframe with a "display:none" style to not bother seeing another tab openup.



                1. Do the actual request which opens the "cross-doamin" link in the iframe WHICH executes my db.php code. I basically open "http://127.0.0.1/whatever/db.php?param1=data&parma2=data" inside my iframe.


                2. Once my search is done and I have the results, my db.php will save an html file with the results as it's contents in my "file:///" direct location's path so: "D:/whatever/my_path/dbres.html".


                I added a new function in my servcom.js. So my new file's contents looks like this:



                // Show page info in another page element or window with parameters (for local use only)
                function ServInfoLocal(dest_frame,web_page,params="",form_id="") iweb == null) return;

                // Add the question mark if there is any parameters to pass
                if (sparams != "") sparams = "?"+sparams;

                // Show results in iframe
                iweb.src = swpage+sparams;



                // AJAX simple HTTP GET request
                function ServInfo(pop_field_id,web_page,params="",form_id="",append_data_to_output = "",exec_string = "",dont_show_results = "") eobj == null) return;

                if (window.XMLHttpRequest)
                // IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();

                else
                // IE6-
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");


                xmlhttp.onreadystatechange = function()
                if (this.readyState == 4 && this.status == 200)
                // Do not show any results if requested
                if (dont_show_results == "")
                if (append_data_to_output == "y")
                document.getElementById(pop_field_id).innerHTML += this.responseText;

                if (append_data_to_output == "")
                document.getElementById(pop_field_id).innerHTML = this.responseText;


                // Execute a string if a user defined one
                if (exec_string != "")
                eval(exec_string);


                ;
                // Add the question mark if there is any parameters to pass
                if (sparams != "") swpage += "?";

                xmlhttp.open("GET",swpage+sparams,true);
                xmlhttp.send();



                // Build a parameter string with div fields of type text, hidden or password
                function GetDivFields(div_id)

                var ediv = document.getElementById(div_id);
                var elem = ediv.children;
                var retval = "";
                var ssep = "";

                for (var i = 0; i < elem.length; i++)

                return retval;




                Now, my dbres.html file will contain just the div elements and all the information I need to show up in my "file:///" page from which the search request came from. So I simply have this inside my page:



                <div id="search-form" style="color:white;font-weight:bold;">
                <input id="srch" name="srch" type="text">
                &nbsp;<button class="bbut" onclick="ServInfoLocal('iweb','http://127.0.0.1/whatever/html/db.php','mode=s','search-form');">Search</button>
                <button class="bbut" onclick="ServInfo('search-results','dbres.html');">Click here</button>
                </div>

                <div id="search-results">Results here</div>

                <iframe id="iweb" style="display:none;" src=""></iframe>


                For now I have 2 buttons, one for the search and one to show the results from my newly created file. Now, I can show my local videos which will load in my video container with "file:///" source directly without passing through http. I'll make my results display automatic which I will be able to do myself from here on.



                So, if someone on planet earth wants to be able to do cross-domain searches in a MySQL database from a local file ran directly from the Windows explorer, there's not too many solutions, actually, I found none so here is at least one for who would ever need this solution.



                For the curious ones out there, my next step will be to loop my folder until my dbres file is present using another js function. Once my file has been fetched, call another php file which wil destroy the created file and I'll be ready for another database request from my webpage situated in a "file:///" location.






                share|improve this answer













                Well, I fanally found a solution. Since this is for local and presentation use only, I could bypass some securities. Basically, doing what we would normally NOT do in a website but all this WITHOUT modifying your webserver config or touching any .htaccess file. Basically, no security restrictions, just a plain old hack that poses no security breaches for your browser or your server.



                To be noted:



                1. 2 different websites exist (so 2 different folders at very different locations), 1 for developpement and serious releases, one for internal and/or presentation purposes.


                2. Every file is local abd inside the presentation folder.


                3. No PHP code can be ran from a "file:///" link.


                4. Access to the mysql database is done through PHP and server is on Apach24


                5. Reading video locally from a "file:///" link are WAY faster than from an "http://" link


                6. Searching needs to be done in MySQL database frm a "http://" link and results need to be displayed on a webpage opened from a "file:///" link.


                7. No changes must be made in the Browser's configuration so disabling CORS is not a solution.


                8. Bypassing cors with methods proposed by many site won't work because of security reasons or because CORS bypass does not accept "file:///" links


                PHP can write files on the server which is where I decided to bypass CORS. Since XML requests through AJAX can be done on the same origin domain an thus, purely in javascript. If a file exists which contains no PHP code AND resides on the same domaine i/e "file:///", the contents can the be read wothout any problems.



                So I simply do the following in my db.php file:



                $s_mode = "";
                $s_text = "";
                $sres = "";

                if (isset($_REQUEST["srch"])) $s_text=$_REQUEST["srch"];
                if (isset($_REQUEST["mode"])) $s_mode=$_REQUEST["mode"];

                if ($s_mode == "s")
                $sres = SearchDB($s_text);
                WriteFile("D:/whatever/my_path/dbres.html",$sres);


                // Writes the contents of the search in a specified file
                function WriteFile($faddress,$fcontents)
                $ifile = fopen($faddress,"w");
                fwrite($ifile,$fcontents);
                fclose($ifile);



                Now using a normal AJAX request, I do 2 things. I opted to use an iframe with a "display:none" style to not bother seeing another tab openup.



                1. Do the actual request which opens the "cross-doamin" link in the iframe WHICH executes my db.php code. I basically open "http://127.0.0.1/whatever/db.php?param1=data&parma2=data" inside my iframe.


                2. Once my search is done and I have the results, my db.php will save an html file with the results as it's contents in my "file:///" direct location's path so: "D:/whatever/my_path/dbres.html".


                I added a new function in my servcom.js. So my new file's contents looks like this:



                // Show page info in another page element or window with parameters (for local use only)
                function ServInfoLocal(dest_frame,web_page,params="",form_id="") iweb == null) return;

                // Add the question mark if there is any parameters to pass
                if (sparams != "") sparams = "?"+sparams;

                // Show results in iframe
                iweb.src = swpage+sparams;



                // AJAX simple HTTP GET request
                function ServInfo(pop_field_id,web_page,params="",form_id="",append_data_to_output = "",exec_string = "",dont_show_results = "") eobj == null) return;

                if (window.XMLHttpRequest)
                // IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();

                else
                // IE6-
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");


                xmlhttp.onreadystatechange = function()
                if (this.readyState == 4 && this.status == 200)
                // Do not show any results if requested
                if (dont_show_results == "")
                if (append_data_to_output == "y")
                document.getElementById(pop_field_id).innerHTML += this.responseText;

                if (append_data_to_output == "")
                document.getElementById(pop_field_id).innerHTML = this.responseText;


                // Execute a string if a user defined one
                if (exec_string != "")
                eval(exec_string);


                ;
                // Add the question mark if there is any parameters to pass
                if (sparams != "") swpage += "?";

                xmlhttp.open("GET",swpage+sparams,true);
                xmlhttp.send();



                // Build a parameter string with div fields of type text, hidden or password
                function GetDivFields(div_id)

                var ediv = document.getElementById(div_id);
                var elem = ediv.children;
                var retval = "";
                var ssep = "";

                for (var i = 0; i < elem.length; i++)

                return retval;




                Now, my dbres.html file will contain just the div elements and all the information I need to show up in my "file:///" page from which the search request came from. So I simply have this inside my page:



                <div id="search-form" style="color:white;font-weight:bold;">
                <input id="srch" name="srch" type="text">
                &nbsp;<button class="bbut" onclick="ServInfoLocal('iweb','http://127.0.0.1/whatever/html/db.php','mode=s','search-form');">Search</button>
                <button class="bbut" onclick="ServInfo('search-results','dbres.html');">Click here</button>
                </div>

                <div id="search-results">Results here</div>

                <iframe id="iweb" style="display:none;" src=""></iframe>


                For now I have 2 buttons, one for the search and one to show the results from my newly created file. Now, I can show my local videos which will load in my video container with "file:///" source directly without passing through http. I'll make my results display automatic which I will be able to do myself from here on.



                So, if someone on planet earth wants to be able to do cross-domain searches in a MySQL database from a local file ran directly from the Windows explorer, there's not too many solutions, actually, I found none so here is at least one for who would ever need this solution.



                For the curious ones out there, my next step will be to loop my folder until my dbres file is present using another js function. Once my file has been fetched, call another php file which wil destroy the created file and I'll be ready for another database request from my webpage situated in a "file:///" location.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Mar 28 at 3:27









                David RichardDavid Richard

                115 bronze badges




                115 bronze badges
















                    Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.







                    Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.



















                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55351033%2floading-a-new-window-from-local-files-and-accessing-its-contents%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

                    Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

                    Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript