Archiv verlassen und diese Seite im Standarddesign anzeigen : PHProxy 0.5b2 - new POST
AllOnline 19-04-2009, 10:03 Hallo,
hab mal mehr oder weniger zum Spaß das oben genannte Script "installiert" und bin dieses nun am erweitern.
Soweit geht alles bis auf eins und zwar:
Ich möchte das Formular um ein Feld erweitern.
Eig kein Problem, Feld selbst ins Formular hinzugefügt.
Wenn man sich nun den Quelltext anschaut ist (soweit ich das sehe) auch alles richtig.
Nur ich kann das letzte Feld, also meins, nicht per POST abrufen imgegensatz zu de anderen also $_POST['...']
Nun meine Frage, kennt jemand das Script und kann mir jemand helfen?
http://prox.webhop.net
onemorenerd 19-04-2009, 13:11 Original geschrieben von AllOnline
Nur ich kann das letzte Feld, also meins, nicht per POST abrufen imgegensatz zu de anderen also $_POST['...']
Steht dein neues Formularfeld innerhalb der <form>-Tags?
Werden die POST-Daten irgendwo gefiltert, also unerwünschtes gelöscht?
AllOnline 19-04-2009, 13:48 Hallo,
erstmal danke für deine antwort.
Zu deiner ersten Frage, schau lieber selber in den Quelltext aber eig. hab ich dies oben schon erläutert.
Zudem anderen; das weiß ich ja eben nicht, deswegen frag ich doch!
AllOnline 20-04-2009, 21:02 Keiner eine Idee?
Soll ich den ganzen Quelltext hochladen?
Per ICQ könnt ihr mich auch erreichen um den Code zuhaben?!
Naja, für Otto-Normal-PHPler ist es schwer, wenn man das Script nicht kennt. Hellsehen können wir nicht. Du müsstest also selber mal ein bisschen debuggen und ggf. Codeauszüge(!) posten. Ich denke mal, dass hier niemand das komplette Script durchsehen möchte...
AllOnline 20-04-2009, 21:29 da ich aber nicht weiß was wichtig ist leider ka
function set_post_vars($array, $parent_key = null)
{
$temp = array();
foreach ($array as $key => $value)
{
$key = isset($parent_key) ? sprintf('%s[%s]', $parent_key,
urlencode($key)) : urlencode($key);
if (is_array($value))
{
$temp = array_merge($temp, set_post_vars($value, $key));
}
else
{
$temp[$key] = urlencode($value);
}
}
return $temp;
}
function set_post_files($array, $parent_key = null)
{
$temp = array();
foreach ($array as $key => $value)
{
$key = isset($parent_key) ? sprintf('%s[%s]', $parent_key,
urlencode($key)) : urlencode($key);
if (is_array($value))
{
$temp = array_merge_recursive($temp, set_post_files($value, $key));
}
else if (preg_match('#^([^\[\]]+)\[(name|type|tmp_name)\]#',
$key, $m))
{
$temp[str_replace($m[0], $m[1], $key)][$m[2]] = $value;
}
}
return $temp;
}
/
// SET FLAGS
//
if (isset($_POST[$_config['url_var_name']]) && !isset($_GET[$_config['url_var_name']]) &&
isset($_POST[$_config['flags_var_name']]))
{
foreach ($_flags as $flag_name => $flag_value)
{
$_iflags .= isset($_POST[$_config['flags_var_name']][$flag_name]) ? (string)
(int)(bool)$_POST[$_config['flags_var_name']][$flag_name] : ($_frozen_flags[$flag_name] ? $flag_value : '0');
}
$_iflags = base_convert(($_iflags != '' ? $_iflags : '0'), 2, 16);
}
else if (isset($_GET[$_config['flags_var_name']]) &&
!isset($_GET[$_config['get_form_name']]) && ctype_alnum($_GET[$_config['flags_var_name']]))
{
$_iflags = $_GET[$_config['flags_var_name']];
}
else if (isset($_COOKIE['flags']) && ctype_alnum($_COOKIE['flags']))
{
$_iflags = $_COOKIE['flags'];
}
if ($_iflags !== '')
{
$_set_cookie[] = add_cookie('flags', $_iflags, time()+2419200);
$_iflags = str_pad(base_convert($_iflags, 16, 2), count($_flags), '0', STR_PAD_LEFT);
$i = 0;
foreach ($_flags as $flag_name => $flag_value)
{
$_flags[$flag_name] = $_frozen_flags[$flag_name] ? $flag_value : (int)(bool)$_iflags{$i};
$i++;
}
}
[...]
//
// STRIP SLASHES FROM GPC IF NECESSARY
//
if ($_system['stripslashes'])
{
function _stripslashes($value)
{
return is_array($value) ? array_map('_stripslashes', $value) :
(is_string($value) ? stripslashes($value) : $value);
}
$_GET = _stripslashes($_GET);
$_POST = _stripslashes($_POST);
$_COOKIE = _stripslashes($_COOKIE);
}
[...]
if (isset($_POST[$_config['url_var_name']]) && !isset($_GET[$_config['url_var_name']]))
{
header('Location: ' . $_script_url . '?' . $_config['url_var_name'] .
'=' . encode_url($_POST[$_config['url_var_name']]) . '&' .
$_config['flags_var_name'] . '=' . base_convert($_iflags, 2, 16));
exit(0);
}
if ($_flags['include_form'] && !isset($_GET['nf']))
{
$_url_form = '<div style="...">'
. '<form method="post" action="' . $_script_url . '">'
. ' <label for="____' . $_config['url_var_name'] .
'"><a href="' . $_url . '">Address</a>:</label> <input id="____' .
$_config['url_var_name'] . '" type="text" size="80" name="' .
$_config['url_var_name'] . '" value="' . $_url . '" /> '
. ' <input type="submit" name="go" value="Go" />'
. ' [go: <a href="' . $_script_url . '?' .
$_config['url_var_name'] . '=' . encode_url($_url_parts['prev_dir']) .'
">up one dir</a>, <a href="' . $_script_base . '">main page</a>]'
. ' <a href="#" onclick=" document.getElementById(\'massage\').style.display = \'inline\';">
Options </a>'
. '</div><div id="massage" style="...">
';
foreach ($_flags as $flag_name => $flag_value)
{
if (!$_frozen_flags[$flag_name])
{
$_url_form .= '<label><input type="checkbox" name="' . $_config['flags_var_name'] .
'[' . $flag_name . ']"' . ($flag_value ? ' checked="checked"' : '') . ' /> '
. $_labels[$flag_name][0] . '</label> ';
}
}
$_url_form .= '<label><select name="proxy" size="1">'.readproxy($_url_form).'</select> Proxy </label>
<a href="#" onclick=" document.getElementById(\'massage
\').style.display = \'none\';">
Close </a></div></form></div>';
$_response_body = preg_replace('#\<\s*body(.*?)\>#si',
"$0\n$_url_form" , $_response_body, 1);
}
}
$_response_keys['content-disposition'] = 'Content-Disposition';
$_response_headers['content-disposition'][0] = empty($_content_disp) ?
($_content_type == 'application/octet_stream' ?
'attachment' : 'inline') . '; filename="' . $_url_parts['file'] . '"' : $_content_disp;
$_response_keys['content-length'] = 'Content-Length';
$_response_headers['content-length'][0] = strlen($_response_body);
$_response_headers = array_filter($_response_headers);
$_response_keys = array_filter($_response_keys);
header(array_shift($_response_keys));
array_shift($_response_headers);
foreach ($_response_headers as $name => $array)
{
foreach ($array as $value)
{
header($_response_keys[$name] . ': ' . $value, false);
}
}
echo $_response_body;
Und die Postingregeln hast du auch nicht beachtet...
ich verschieb mal nach Projekthilfe.
AllOnline 21-04-2009, 08:32 In wie fern halt ich mich nicht an die Regeln?
Wie soll ich den betroffenen den Code zukommen lassen?
Sind schon nur ausschnitte!
http://sourceforge.net/projects/poxy/
oben etwas angepasst!
onemorenerd 21-04-2009, 11:39 Meine Güte, das kann doch nicht so schwer sein. Suche im Script die Stelle, an der du deine POST-Variable brauchst. Dort machst du var_dump($_POST) und schaust was da ist. Wenns fehlt, suchst du ab dort rückwärts nach unsets.
Wenn dir das alles zu kompliziert ist, solltest du vielleicht kein Script von der Stange nehmen sondern erstmal selber eins schreiben. Hinterher weißt du bescheid. ;)
AllOnline 21-04-2009, 15:16 Generell habe ich schon mehrere Sachen geschrieben.
if (isset($_response_headers['content-length'])) {
$_content_length = $_response_headers['content-length'][0];
unset($_response_headers['content-length'],
$_response_keys['content-length']); } if
(isset($_response_headers['content-disposition'])) {
$_content_disp = $_response_headers['content-disposition'][0];
unset($_response_headers['content-disposition'], $_response_keys['content-disposition']); } if
(isset($_response_headers['set-cookie']) &&
$_flags['accept_cookies']) { foreach ($_response_headers['set-cookie'] as $cookie) {
$name = $value = $expires = $path = $domain = $secure =
$expires_time = '';
preg_match('#^\s*([^=;,\s]*)\s*=?
\s*([^;]*)#', $cookie, $match) && list(, $name, $value) =
$match; preg_match('#;\s*expires\s*=\s*([^;]*)#i',
$cookie, $match) && list(, $expires) = $match;
preg_match('#;\s*path\s*=\s*([^;,\s]*)#i', $cookie, $match) &&
list(, $path) = $match; preg_match
unset($data); in php wird leider alles gespeichert :-(
unset finde ich 8mal und die haben ja schon ihren sinn, wie kann ich den meine benötige POST "abspeichern"? eig ja ganz am anfang der seite vor jedem unset und in ne andere var speichern?! geht aber net :-(
Könnte sich nciht doch einer den source angucken (oben link)?
aber nirgends wird das nen post gelöscht?!
und auch kein $_REQUEST
direkt am anfang
array(0) { }
Jetzt geh doch bitte endlich mal logisch vor ...
Erst mal var_dump($_POST) ganz an den Scriptanfang - ist der Wert vorhanden, ja oder nein?
Wenn ja - dann weiter "runter" mit der Kontrollausgabe - bis er irgendwann nicht mehr da ist.
Wenn nein - dann wird's Zeit, sich das Formular noch mal genauer anzuschauen.
Und dass das error_reporting auf E_ALL steht, dürfen wir ja wohl hoffentlich voraussetzen?
AllOnline 21-04-2009, 19:13 direkt am anfang
quote: array(0) { }
Errorreport ist natürlich auf all
mit var_dump($_REQUEST);
kommt unter den vielen cookies der beuschten unterseiten noch folgende punkte:
["q"]=> string(7) "uggc://"
["hl"]=> string(3) "2f3"
["flags"]=> string(3) "2f3"
"__utma"]=> string(64) "251912392.2433809709681262000.1239539267.1239539267.1239655085.2"
["__utmz"]=> string(70) "251912392.1239539267.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)"
["wt_eid"]=> string(19) "2123961245000475798"
["_csuid"]=> string(16) "4911c0004cb6a06b"
["wt_l_v"]=> string(10) "1240321505"
["wt_sid"]=> string(19) "2124032138100845151"
["mc"]=> string(1) "1"
Die ersten drei ehören immer zum phproxy
aber das formular bietet ja viele felder, wenn ihr die seite besucht seht ihr es ja, das formular ist zudem richtig (quelltext)
http://prox.webhop.net
Original geschrieben von AllOnline
direkt am anfang
quote: array(0) { }
Na schau mal an - da ist wohl insgesamt nicht viel mit POST-Parametern, hm?
Und wenn man sich das ganze mal kurz anschaut (ich sag's noch mal: Debuggen, und zwar mit ein bisschen Verstand, kann Wunder wirken ...), dann sieht man auch, woran's liegt:
Dein Formular zielt auf /index.php - und wenn ich dahin einen Request absetze, dann zeigt mir FireBug, dass als Antwort ein 302 Found plus Location-Header kommt, der auf
http://prox.webhop.net/index.php?q=aHR0cDovL2V4YW1wbGUuY29tLw%3D%3D&hl=3ef
umleitet.
Und nach so einer Umleitung ist nix mehr mit POST, weil der Client diese Adresse daraufhin per GET anfordert ...
Also findest du jetzt mal raus, warum dein Script diese Umleitung vornimmt. (Das kryptische im Query-Part des URLs scheint ja sowas wie 'ne Session-ID zu sein.)
AllOnline 21-04-2009, 20:55 Das wird gemacht weil es ein webproxy ist und die "unterseite" kein post empfangen darf, die sie nichts angeht.
deswegen wird das gemacht!
aber wie komm ich dann an meine post gesendet proxy?
zudem kommen die anderen post kommenja auch an die passende stelle, wird ja nur nie mit $_POST angesprochen.
Wahrscheinlich eher mit header location ect nur wie?
da kenn ich mich eben net aus!
Original geschrieben von AllOnline
Das wird gemacht weil es ein webproxy ist und die "unterseite" kein post empfangen darf, die sie nichts angeht.
deswegen wird das gemacht!
OMFG ...
aber wie komm ich dann an meine post gesendet proxy?
Überleg dir doch vielleicht erst mal, wie du an einen Duden kommst.
zudem kommen die anderen post kommenja auch an die passende stelle, wird ja nur nie mit $_POST angesprochen.
Wahrscheinlich eher mit header location ect nur wie?
da kenn ich mich eben net aus!
Falls obiges "Erklärungen" darstellen soll, die das Problem besser nachvollziehbar machen ... sorry, Nope - mir ist immer weniger klar, was du a) eigentlich vorhast, und wo b) jetzt dein Problem liegt.
AllOnline 21-04-2009, 21:10 Entschudigung wenn ich mich falsch ausdrücke.
Also das Problem ist folgendes:
ich habe in das formular manuell ein neues Feld eingefügt.
Aber ich kann dieses nicht abrufen weil diese auf get umgeschrieben werden. (Wieso steht oben)
Nun die Frage, wie komme ich an meine gesendeten Werte?
Dazu ambestenden Code oben runterladen und mir erklären wie ich dran komme!
Original geschrieben von AllOnline
ich habe in das formular manuell ein neues Feld eingefügt.
Aber ich kann dieses nicht abrufen weil diese auf get umgeschrieben werden.
Und wo geschieht das?
Hast du auch an der Stelle eventuell notwendige Anpassungen vorgenommen?
Nun die Frage, wie komme ich an meine gesendeten Werte?
Grundsätzlich erst mal: "So, wie an die anderen auch".
Wenn die anderen alle einzeln "auf GET umgeschrieben" werden, und das für dein neues Feld nicht automatisch passiert - dann wirst du an der Stelle entsprechendes ergänzen müssen.
Dazu ambestenden Code oben runterladen und mir erklären wie ich dran komme!
Selber machen heisst die Devise.
Wir sind kein bezahlter Support hier, dem man nur seine Anforderungen mitteilt, und der dann mal für einen macht ...
AllOnline 21-04-2009, 21:37 mein problem ist weiterhin (obwohl ich eig relativ gut php kann) keine umschreibung sehe und ich deshalb meins nicht hinzufügen kann.
und irgend wo müssen die anderen post ja gelöscht werden, auch dies finde ich nicht wirklich da ich mich mit dem ganzen header zeug nicht wirklich auskenne.
Ich weiß das ihr hier kein bezahlter support seit ect, deswegen ist dies ein forum auf gegenseitigkeit, aber nur du*** sprüche klopfen nenne ich spam!
wenn das alles so einfach ist, wie gesagt code besorgen und mir sagen wo. ich finde es leider net, ansonten würde ich eure zeit garnicht erst in anspruch nehmen!
wie schon erwähnt, wo auf get ect aumgeschrieben wird, bzw wie von anderen hier beschrieben umgeleitet wird, ka!
onemorenerd 21-04-2009, 23:32 Du hast doch oben schon die richtigen Codestellen gepostet. Was ist nun? Verstehst du sie nicht?
Versuch erstmal deinen POST-Wert bei der Weiterleitung mitzuschleifen. Etwa so:
header('Location: ' . ... . base_convert($_iflags, 2, 16) . '&deinName=' . $_POST['deinName']);
Dann schau mal, ob du deinen POST-Wert nun in den GET-Parametern wiederfindest.
AllOnline 22-04-2009, 06:43 Danke für die bemühung.
das hat schon mal funktioniert! - DANKE
(doch so einfach^^ :-( )
um schon mal einen schritt vorraus zudenken;
die gesendeten sachem vom proxy sind ja verschlüsselt.
Meine müsste ich ja auch verschlüsseln können mit der selbigen funktion oder nicht?! Damit die "unterseite" nichts damit anangen kann!?!
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
edit:
Hab mit
proxy=' . encode_url($_POST['proxy'])
verschucht zu verschlüsseln
hab nun das weitere problem das von der main page kein proxy gesendet wird sondern nur von den unterseiten her :-(
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
edit 2
Läuft alles, thx
aber ich glaub die 2ten Proxys sind langsam.
Könnt ihr mal bitte ausprobieren
und noch nen paar proxys posten?!?
prox.webhop.net
bzw proxi.selfip.net
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Noch einmal ne Frage, kommt mit dem array nicht anz klar,
wo ist der Fehler^^:
function proxyread($value){
$proxyarrays = proxyarray(); //Bekommt ein 2 Deminsionales Array
$returns = $proxyarrays[$value]; //Sucht sich das Passende Unterarray raus.
return($returns); //Gibt 2 Demensionales Array zurück
}
AllOnline 23-04-2009, 20:47 HAbe leider immer noch das Problem.
Könnt ihr die seite mal testen.
Er hängt den &proxy leider nciht immer an
gibt es da eine regelmäßigkeit?
Wie sorg ich dafür das in jedem Link der beuschten seite &proxy=... angehangen wird?
Eig hab ich gedacht das ich dies schon hab aber naja :-(
Original geschrieben von AllOnline
gibt es da eine regelmäßigkeit?
In deinen Postings?
Ja - immer wieder "funzt nich" als vermeintliche "Problembeschreibung", und ansonsten nicht erkennbar, was du bereits versucht hast, um den Fehler zu analysieren.
AllOnline 24-04-2009, 07:51 Danke für den versuch.
Ich habe wie oben beschrieben (ja dazu muss man lesen) das POST bei der weiterleitung an die url als get angehangen.
Dies bitte ich euch nun zu überprüfen, da es leider mal funktioniert und mal nicht, obwohl ich es an der einzigen weiterleitung angehangen habe, wie es ein tipp von euch war.
1. der Proxy wird bei den Links auf der unterseite noch nicht angehangen, in welcher Ziele kann ich das
noch machen?
2. Irgend wie wird der Proxy von der Startseite nicht in das nächste
Fenster übernommen!
Also wenn man nichts eingibt übernimmt er ihn, wenn die url
richtig ist und er lädt komischerweise nicht :-(
*dumme Kommentare bitte lassen, wenn konstruktive Kritik*
*dumme Kommentare bitte lassen, wenn konstruktive Kretik* Das einfordern einer kostenlosen Leistung (insb. im Projekthilfeforum) dann bitte auch. Der Ton in deinen Postings kommt irgendwie so rüber.
onemorenerd 24-04-2009, 12:34 Es heißt Kritik. Mit i.
AllOnline 24-04-2009, 14:20 bitte danke
b2t
|
|