[JS/PHP] Datei versteck öffnen zum ausführen **erledigt**

strolch00

redraft.de
ID: 155297
L
21 April 2006
1.684
72
Hi @all,

durch die Abofunktion auf meinem Projekt habe ich eine PHP Datei welche durch JS direkt in der Abofunktion aufgerüfen werden muss. Gibt es eine möglichkeit diese Datei für den User versteckt aufzurufen, also ohne ein für den User sichtbares Fenster zu öffnen?

Per img Tag einbinden ist mir bekannt aber ich finde das ist nicht die Lösung meines Problems.

Wichtig ist mir das die Datei nicht per User abbort oder Fenster schließen, unterbrochen werden kann so das die immer durchläuft und die Abo´s updatet.
Ich weis das es da eine PHP variable gibt die man setzen kann, aber ich weis nicht mehr wie die hies und soweit ich mich erinnern kann muss dazu safe mode off sein, was eigentlich nicht in meinem Sinne ist den nur dafür auszuschalten.

Man weis ja viele Wege führen nach Rom :p .

Danke schonmal.
 
Zuletzt bearbeitet:
ich habs zwar jetzt nicht 100% verstanden... ich geh mal davon aus dass deine abo funktion javascript ist und du von dem javascript ne php funktion (oder was auch immer aufrufen willst). ein bild ist da das einfachste... alternativ ajax. ist zwar umständlicher, aber auch flexibler...
 
Genau so ist es die Abofunktion wird on the Fly erledigt mit JS, ohne eine neue Seite zu laden, jetzt brauch ich nur ne Lösung wie ich die PHP Datei dann aufrufen kann das die durchläuft.

Also du sagst ein Bild einbinden, dann muss ich die PHP Variable nutzen. Aber wie kann ich sicher gehen das die Datei durchläuft und wie könnte ich das einbinden? Mit document.write evtl? Der Img Tag soll erst erscheinen wenn ich das will ich möchte den nicht starr in das Tpl schreiben. Bzw wenn ich das mache muss ich die Seite nach dem Setzen der Abo id reloaden lassen, des würde auch doof aussehen.
 
was heißt sicher gehen? ne 100% sicherheit gibts so nicht... entweder du nimmst das in kauf, oder du geht ein anderen weg. das bild kannst einbinden wie du willst... du kannst es auch versteckt einbinden. zb ich würde es würde es per createElement() machen... und dann appendChild oder so.

zum anderen weg... du kannst auch auch erst das php script "aufrufen" und erst wenn das erfolgreich war, das machen was unbedingt die aktion des php scripts brauchte. das lässt sich am einfachsten mit ajax machen... zb du sendest nen syncronen tequest der das php script aufruft, dann wertest du die rückgabe aus und fürhst danach den wichtigen teil der javascript funktionalität aus. alternativ kannst du auch asyncron arbeiten... damit kannst du das ganze nutzerfreundlicher gestallten, ist aber aufwendiger.
 
Ja das umkehren der Funktionen ist nicht möglich weil der User verschiedenen möglichkeiten hat, um Dinge auszuwählen. Aber ich denke ich werde mal das mit dem Bild probieren, wenn das nicht geht werde ich auf AJAX umsteigen.

Aber ne Frage habe ich noch an Dich was meinst du mit Nutzerfreundlicher? Wo genau siehst du die Vorteile in dem Fall?
 
mit nutzerfreundlicher mein ich ein syncronen und asycronen request. bei einem syncronen request hängt alles... also wenn der server nen hänger hat und es zb 2sekunden dauert bis dein php script ausgeführt ist, hängt auch beim user die seite für die zeit. bei einem asycronen request wird der request abgesetzt, aber das script läuft weiter und wenn die daten ankommen wird zb eine andere funktion aufgerufen. das ist für den nutzer einfach handlicher... das ganze wirkt damit flüssiger. aber das kommt wider ganz auf den einsatz drauf an...

aber wieso ist ein umkehren der funktion nicht möglich? ich geh mal davon aus dass hat was mit cookies zu tun? ich stell mir das jetzt grade mal so vor wie

user eingaben
eingaben im cookie speichern
php script aufrufen

das ganze kannst du ja auch ganze einfach umgestallten in form von

user eingaben
php script aufrufen
cookie speichern

wenn ich jetzt komplett falsch leige, kannste ja auch mal posten was du genau vor hast. wie du sagst viele wege führen nach rom ;)
 
Ja klar so kann man es rumdrehen aber das löst warscheinlich nicht mehr problem.

Ich tendiere so langsam zu AJAX weil das einbinden per img Tag nicht funktioniert, bzw. eingebunden wird es aber es muss ja auch neu geladen werden.

Also mein Ablauf ist so:
Code:
User klickt Abo link 
|    |
|     `-Einloggen
 `-Gastzugang
    |
     `-Cookie wird angelegt, gleichzeitig das PHP aufgerufen und der Img tag
        per innerHTML eingebunden*
       |
        `-jetzt kann der User den Link abonieren

Beim Stern häng ich gerade, weil ich das PHP nicht zum aufruf bekomme. Ist aber logisch weil innerHTML irgendwie nicht dazu geeignet ist, nen Iframe werde ich auch vergessen können also bleibt in meinen Augen nur noch AJAX.
Oder ich mach ne ganz schnutzige Variante und setz die location auf die php und nach der Verarbeitung in DB setz ich nen header auf die Ursprungsdatei, aber da habe ich wieder das Problem wie D schon sagst wenn der Server hängt sieht der User ne weiße Seite.

edit:

Habe mich für Ajax entschieden ist eindeutig der beste weg, als mit irgendwas anderem herum zu experimentieren. Habe mit dazu den code von AJAX getting started umgeändert:
PHP:
function ajaxRequest( url )
{
   var http_request = false;

   if(window.XMLHttpRequest)   // Mozilla, Safari,...
       http_request = new XMLHttpRequest();
   else if(window.ActiveXObject)   // IE
   {
      try
      {
         http_request = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch(e)
      {
         try
         {
            http_request = new ActiveXObject("Microsoft.XMLHTTP");
         }
         catch (e) {}
      }
   }

   if(!http_request)
       return false;

   //http_request.onreadystatechange = function tmp(){};
   http_request.open('GET', url, true);
   http_request.send(null);
}
 
Zuletzt bearbeitet: