Wechselstuben Script + allow_url_fopen + 2. Variante

Hallo!

Meine Kenntnisse in PHP sind so wie der IQ einer Grünengurke.

Mein Problem ist ich würde gerne eine Tauschhalle für virtuelle Währungen machen.
Habe mir ein passendes Script besorgt. (Wechselstube 2.0 von losescripte.de)
Soweit alles gut, Script hochgeladen, alles Eingestellt und es läuft sogar.
Nun fängt das Problem an der Hoster “bplaced” hat die funktion “allow_url_fopen” ausgestellt.
Leider wird die dringend benötigt, um meine Konten mit der Wechselstube abzugleichen.
Da die Funktion leider aus ist funzt das nicht richtig!
Nun nach mehreren Stunden suche bin ich auf das hier gestoßen:

[quote]<?php
/** file()-Alternative bei allow_url_fopen = off

  • Eingabe: $url - Die auszulesende URL.
  • Rückgabe: Array, das alle Zeilen der auszulesenden URL enthält.
    *********************************************/
    function socketfile($url) {
    // URL zerlegen
    $parsedurl = @parse_url($url);
    // Host ermitteln, ungültigen Aufruf abfangen
    if (empty($parsedurl[‘host’]))
    return null;
    $host = $parsedurl[‘host’];
    // Pfadangabe ermitteln
    if (empty($parsedurl[‘path’]))
    $documentpath = ‘/’;
    else
    $documentpath = $parsedurl[‘path’];
    // Parameter ermitteln
    if (!empty($parsedurl[‘query’]))
    $documentpath .= ‘?’.$parsedurl[‘query’];
    // Port ermitteln
    $port = empty($parsedurl[‘port’])?80:$parsedurl[‘port’];
    // Socket öffnen
    $fp = fsockopen ($host, $port, $errno, $errstr, 30);
    if (!$fp)
    return null;
    // Request senden
    fputs ($fp, “GET {$documentpath} HTTP/1.0\r\nHost: {$host}\r\n\r\n”);
    // Header auslesen und verwerfen
    do {
    $line = chop(fgets($fp));
    } while (!empty($line) and !feof($fp));
    // Daten auslesen
    $result = Array();
    while (!feof($fp)) {
    $result[] = fgets($fp);
    }
    // Socket schliessen
    fclose($fp);
    // Ergebnis-Array zurückgeben
    return $result;
    } [/quote]

Aber woher soll ich wissen was in die roten Zeilen kommt. Kann mir das einer sagen?
Und in welchen Ordner soll ich das Script hochladen? Bringt es denn überhaupt was eine einzelne Datei da hinzupacken, die muss doch mit irgendwas Verknüpft werden oder nicht?

Ich danke und hoffe auf Hilfe.

fsockopen(), was dort im Script verwendet wird, ist ebenfalls deaktiviert.
Momentan gibt es keine Möglichkeit, um an Daten außerhalb des eigenen Webspaces ranzukommen.

Alternative wäre zu gucken, ob es möglich ist die Daten (sofern es nicht zu viele sind) auf den bplaced Webspace abzuspeichern, oder das ganze “passiv” d.h. mit einem externen cronjob oder ähnliches in einigermaßen regelmäßigen Abständen, auf bplaced aktualisieren zu lassen.
Je nach dem wie aktuell die Daten sein müssen, ist das eine besser als das andere (oder gar keins von beiden ist dafür geeignet).

mfg Balmung

Schade. Kennt denn keiner einen kostenlosen Server der die Funktion noch unterstützt?

Ich kenne schon einen, aber der erlaubt momentan leider keine weiteren Anmeldungen.
Bei dem war es bisher immer genau umgekehrt:
mail() geblockt, aber sockets erlaubt.

Ja hört sich gut an. Wenn sich was ändern sollte oder jemand einen Server/Hoster kennt der möge sich bitte melden.

schau dich doch mal ein wenig bei 000webhost.com um - Die haben fsockopen aktivert, und das kann man ganz leicht per Iframe hier einbinden :slight_smile:

Ja das problem ist, ich hab kein Plan von dem Zeug!

Und wie ist das gemeint mit “hier einbinden”.

Will ja nicht gleich 2 Server/Hoster für ein Script benutzten.

Dann ist es eigentlich aussichtslos, außer du steigst auf Paidspace um. Denn um Spam zu vermeiden sind entweder mail() oder fsockopne() deaktivert.

Wenn fsockopen bei einem freehoster aktiviert ist, kann man aber immerhin noch mails mit einem “sendmail”-script oder ähnlichem versenden.
Der Vorteil ist dann, dass spam so gut wie ausgeschlossen ist, da die User sich bei ihrem Mail Anbieter (GMX, web.de etc.) anmelden müssen, um Mails zu versenden.
Deshalb gefällt mir die Kombination: sockets ja, mail() nein, besser als die Variante die momentan hier bei bplaced ist…
Naja, mal sehen was miro sich für die Zukunft einfallen lässt.

mfg Balmung

Danke für die ganzen antworten, der Hoster hier 000webhost.com geht bis jetzt. Alles läuft glatt. Das einzige was ist er lädt manchmal die Seite einfach nicht und bricht mit Ladefehler ab.

Das liegt an den Servern, die sind leider dort ziemlich überladen - So wie ich das mitbekommen habe hat jeder Server 500GB - bei 250MB, die einem dort angeboten werden macht das 2000 User pro Server - Wenn alle ihr Limit ausgeschöpft haben, ansonsten dementsprechend mehr.

ich bin ebenfalls blutiger anfänger in php. ich möchte einmal am tag, txt-dateien(.txt.gz) von einem server laden lassen und dann in eine datenbank schreiben. wie realisiert man das, dass ich nicht immer die dateien selbst per ftp hochladen muss?

danke sippi :wink2:

Wenn du die Datei als .gz haben möchtest ist die Frage offen: Welches OS benutzt du?

also die datei soll von einem anderen server, der diese bereitstellt, in meinen bplaced space geladen werden. im moment übertrage ich die selbst über ftp von meinem rechner auf den bplaced space.

webmatze.de/ftp-mit-php/

Schau dir das mal an.
Wenn du anstelle des Formulares einfach direkt die Datei einbindest, die sich der Server holen soll, dann sollte das genau das sein was du suchst.

Solange deine Dateien nicht an zu sehr den Server-Ressourcen dürfte das wohl in Ordnung gehen.

nein, vielleicht hast du mich falsch verstanden.
ich suche im prinzip eine alternative zu fsockopen

Eine Alternative ist mir nicht bekannt, sry.

Auch wenn es eine Alternative geben sollte, dann wäre die doch mit Sicherheit auch gesperrt, ansonsten würde es ja keinen Sinn machen.

Wäre ja so, als würdest du die Haustür zumauern, die Fenster aber sperrangelweit offen lassen.

Schöner Vergleich :smiley:

Per Console und ließe sich aber doch die Verbindung per FTP herstellen und die Datei runterladen, dann die Verbindung trennen und in einer neuen Verbindung die Datei hier hochladen.

Das ganze als BAT/Shell sichern, und fertig ist’s.

eine möglichkeit um das ganze ein bisschen zu umgehen wäre:

ein Script auf einem anderen space, auf dem fsockopen aktiviert ist, wird regelmäßig (vll. einmal am tag?) mit einem cronjob ausgeführt…
dieses Script holt dann meinetwegen irgendwelche Daten ab, und schickt sie an den bplaced-space.

Keine schöne Lösung, aber durchaus möglich.