Registrierung auf einer anderen Seite

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Registrierung auf einer anderen Seite

    Hallo

    Ich benutze seit ein paar tagen diesen chat:
    demo.chat.pcpin.com/

    die registrierung für den chat würde ich gerne auf einer anderen seite einfügen,weiß aber nicht wie das geht.Also das hier bei mir auf einer anderen seite (auf dem gleichen server natürlich):

    Code:

    Quellcode

    1. <form action="./index.php" method="post" onsubmit="doRegister(); return false;">
    2. <table id="register_table" class="tbl" border="0" cellspacing="1" cellpadding="0" style="position:absolute;display:none;">
    3. <tr>
    4. <td nowrap="nowrap" class="tbl_header_main" colspan="2">
    5. Registrierung
    6. </td>
    7. </tr>
    8. <tr>
    9. <td nowrap="nowrap" class="tbl_row">
    10. <b>Benutzername:</b>
    11. </td>
    12. <td nowrap="nowrap" class="tbl_row">
    13. <input id="register_username" value="" type="text" size="24" maxlength="10" title="Benutzername" autocomplete="off" />
    14. </td>
    15. </tr>
    16. <tr>
    17. <td nowrap="nowrap" class="tbl_row">
    18. <b>Email Adresse:</b>
    19. </td>
    20. <td nowrap="nowrap" class="tbl_row">
    21. <input id="register_email" value="" type="text" size="24" maxlength="255" title="Email Adresse" autocomplete="off" />
    22. </td>
    23. </tr>
    24. <tr>
    25. <td nowrap="nowrap" class="tbl_row">
    26. <b>Passwort:</b>
    27. </td>
    28. <td nowrap="nowrap" class="tbl_row">
    29. <input id="register_password1" value="" type="password" size="24" maxlength="255" title="Passwort" autocomplete="off" />
    30. </td>
    31. </tr>
    32. <tr>
    33. <td nowrap="nowrap" class="tbl_row">
    34. <b>Passwort bestätigen:</b>
    35. </td>
    36. <td nowrap="nowrap" class="tbl_row">
    37. <input id="register_password2" value="" type="password" size="24" maxlength="255" title="Passwort bestätigen" autocomplete="off" />
    38. </td>
    39. </tr>
    40. <tr>
    41. <td nowrap="nowrap" class="tbl_row" colspan="2" style="text-align:center">
    42. <button type="submit" title="Registrieren">Registrieren</button>
    43. &nbsp;&nbsp;
    44. <button type="button" title="Abbrechen" onclick="showLoginForm()">Abbrechen</button>
    45. </td>
    46. </tr>
    47. </table>
    48. </form>
    Alles anzeigen

    Habe das mal eingefügt hat aber leider nicht geklappt

    Ich will später es so machen,dass wenn sich einer im cms anmeldet gleichzeitig auch im chat angemeldet wird also so:

    <form action="cmsregister.php" action="chatregister.php">.....
  • Ich weiß nicht ich habe als ziel chat/index.php genommen.Trotzdem werde ich einfach auf die Chat-Seite weitergeleitet ohne Registrierung.

    Also nochmal zu meinem Problem.
    Ich habe ein cmsl und würde gern es so haben,dass wenn sich einer anmeldet im cms gleichzeitig auch im chat angemeldet wird also so:

    <form action="cms.php" action="chat/index.php"....>
  • Leide fehlen nützliche Infos:
    Wenn das Anmeldescript nicht von dir ist und der Quellcode unbekannt, ist es möglich das das Zielscript den Referer prüft, oder vorher eine Session erzeugt hat, die danach benötigt wird. Dann wärst du relativ machtlos.

    Wenn du für dein eignes Loginscript, von dem du weißt, dass es oben Genanntes nicht macht, von einer anderen Seite ansprechen möchtest, dann würde fehlen die Infos ob es die selbe Domain ist und wie die Verzeichnisstruktur aussieht. Allgemein würde ich dir aber wenn dir das ganze selber unklar ist, empfehlen nicht mit relativen Pfadangaben zu arbeiten, sondern bei action die komplette URL einzutragen. Wenn es dann geht kannst du ja immernoch überlegen das zu ändern. Die Vorteile sind nicht so gravierend.
    Wenn es aber beides auf deinen Servern läuft wäre die korrekte vorgehensweise eine andere, zumal zwei Actions bei einem Post nicht möglich sind soweit das richtig erinnere. Das beste wäre natürlich dein CMS und der Chat verwenden die selbe Datenbank in der angemeldete Benutzer abgelegt hast. Damit vermeidest du doppelte Datensätze, inkosistensen und dir selber eine Menge arbeit.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Hallo nochmals.

    Habe mich entschieden die registrierung für den chat noch als popup einzustellen.Aufder anderen seite funktioniert es aber leider nicht.Ich werde ohne registrierung weitergeleitet hier ist die html für den chat was ist hier falsch?:

    Quellcode

    1. <form action=\"http://easy-coding.de/chat/index.php\" method=\"post\" onsubmit=\"doRegister(); return false;\">
    2. <input id=\"register_username\" value=\"" . $pvs['uname'] . "\" type=\"text\" size=\"24\" maxlength=\"12\" title=\"Username\" autocomplete=\"off\" />
    3. <input id=\"register_email\" value=\"" . $pvs['email'] . "\" type=\"text\" size=\"24\" maxlength=\"255\" title=\"E-Mail address\" autocomplete=\"off\" />
    4. <input id=\"register_password1\" value=\"" . $pvs['vpass'] . "\" type=\"password\" size=\"24\" maxlength=\"255\" title=\"Password\" autocomplete=\"off\" />
    5. <input id=\"register_password2\" value=\"" . $pvs['vpass'] . "\" type=\"password\" size=\"24\" maxlength=\"255\" title=\"Confirm password\" autocomplete=\"off\" />
    6. <button type=\"submit\" title=\"Register\">Register</button>
    7. </form>
  • Hi,

    die Action deines Formulars ist total unrelevant, da wie d0nut es schon geschrieben hat, alles via JS verarbeitet wird.

    Quellcode

    1. <form onsubmit="doRegister(); return false;" method="post" action="./index.php">

    Quellcode

    1. onsubmit="doRegister();




    Du müsstest dir die Funktion raussuchen und bei dir auch einbinden (mit ggf. ABhängigkeiten).
    Oder du kopierst den gesanten JS Part.

    Alternative wäre die Seite in einem iFrame darzustellen und in deine Seite einzubinden.
  • Hallo

    ich hab mal gesucht und das hier gefunden ich denke mal das,dass ist was du meinst.
    verstehe aber immer noch nicht wie ich das jetzt verwenden soll:

    Quellcode

    1. /**
    2. * Register
    3. */
    4. function doRegister() {
    5. var errors=new Array();
    6. $('register_username').value=trimString($('register_username').value);
    7. $('register_email').value=trimString($('register_email').value);
    8. if ($('register_username').value=='') {
    9. errors.push(getLng('username_empty'));
    10. } else if ($('register_username').value.length<LoginLengthMin || $('register_username').value.length>LoginLengthMax) {
    11. errors.push((getLng('username_length_error').split('[MIN]').join(LoginLengthMin)).split('[MAX]').join(LoginLengthMax));
    12. }
    13. if (!checkEmail($('register_email').value)) {
    14. errors.push(getLng('email_invalid'));
    15. }
    16. // Validate passwords
    17. if ($('register_password1').value.length<3) {
    18. errors.push(getLng('password_too_short'));
    19. } else if ($('register_password1').value!=$('register_password2').value) {
    20. errors.push(getLng('passwords_not_ident'));
    21. }
    22. hideRegisterForm();
    23. if (errors.length>0) {
    24. alert('- '+errors.join("\n- "), null, null, 'showRegisterForm(true)');
    25. } else {
    26. sendData('_CALLBACK_doRegister()', formlink, 'POST', 'ajax=do_register'
    27. +'&login='+urlencode($('register_username').value)
    28. +'&password='+urlencode($('register_password1').value)
    29. +'&email='+urlencode($('register_email').value)
    30. +'&language_id='+urlencode($('language_selection')? $('language_selection').value : 0)
    31. );
    32. }
    33. return false;
    34. }
    35. function _CALLBACK_doRegister() {
    36. //debug(actionHandler.getResponseString()); return false;
    37. toggleProgressBar(false);
    38. if (actionHandler.status==0) {
    39. // Register successfull
    40. alert(actionHandler.message, null, null, 'showLoginForm()');
    41. } else {
    42. // Register failed
    43. alert(actionHandler.message, null, null, 'showRegisterForm(true)');
    44. }
    45. }
    Alles anzeigen


    Klar könnte ich die Seite als iframe einbinden,die user müssten sich dann aber zweimal registrieren.Jetzt wo ich höre dass,das action unrelevant ist kann ich doch sowas zusammenbasteln:

    <form action="userregistrierungfürcms.php" methos="post" onsubmit="doRegister();>
    hmm?
    Benutzer wird währen er sich im cms anmeldet gleichzeitig auch im chat angemeldet.Soweit ich weiß ginge es zumbeispiel nicht wenn ich zweimal action nehmen müsste.
  • Hi,

    binde einfach mal die JS Datei ein, wo du die Funktion gefunden hast.
    Es scheint aber so, als ob die Action doch nicht so unrelevant ist, wie ich es geschrieben habe.
    Ich sehe nicht ganz wo die variable formlink herkommt die in der senddata() funktion genutzt wird. Anscheinend wird die global zur Verfügung gestellt.

    Dann setzt einfach mal den richtigen Pfad zu der index.php Datei in deiner Action und probier mal aus, was passiert.
  • Um Missverständnisse zu vermeiden? Von wem redest du?

    Hast du dich an den Support des PCPIN Chats gewandt?
    Oder meinst du tatsächlich unseren Support?

    Von unserer Seite ist dir an dieser Stelle genug geholfen worden.
    Dein Thema befindest dich in einem Programmier Forum von Programmiern für Programmierer - nicht in einem Jobforum.
    Ein Programmierer findet in diesem Thread alle notwendigen Informationen wieder.

    UPDATE:
    Für die anderen, die Lösung und Herangehensweise noch interessieren.
    Firebug installieren -> Login durchführen -> Netzwerk Tab beobachten

    URL: demo.chat.pcpin.com/index.php
    Post: ajax=do_login&language_id=42&login=benutzername&passwort=passwort&time_zone_offset=7200
  • Natrülich meine ich den support von pcpin.

    Das funktioniert jetzt perfekt nur wie könnte ich das jetzt einfügen.
    Beim cms ist es so nach dem registrieren und bestätigen das alle angaben richtig ist wird man aufgefordert sich gleich einzulogen,Das sieht dann so aus:

    Quellcode

    1. <form action=\"register.php\" method=\"post\">\n
    2. <input type=\"hidden\" name=\"uname\" value=\"" . $session['uname'] . "\">\n
    3. <input type=\"hidden\" name=\"pass\" value=\"" . $session['mailpass'] . "\">\n
    4. <input type=\"submit\" value=\"" . _DIRECTLOGIN . "\">\n
    5. </form>

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von frederico ()

  • Warum willst du den Benutzer noch einen Button drücken lassen.
    Die Registrierung solltest du lieber automatisch mit einem serverseitigen Skript machen (z.B. php).

    Login geht übrigens nicht, da der Chat (zumindest für Gäste) komplett zustandslos ist.
    D.h. bei einem Refresh ist alles weg. Somit kannst du dich nicht (ohne richtige Schnittstellen) von extern anmelden.
  • fsockopen benötigst du. Hier hast du eine Methode, die dir das ganze einfacher macht, siehe example usage

    Quellcode

    1. /**
    2. * http connector being better than file_get_contents
    3. *
    4. * Example usage:
    5. * @code
    6. * $resturn = HTTPConnector::sendRequest("https://domain.tld/foo", array(
    7. * 'key1' => 'val1',
    8. * 'key2' => 'val2',
    9. * ));
    10. * @endcode
    11. */
    12. class HTTPConnector {
    13. public static function sendRequest($request_url, $request_array) {
    14. $url_array = parse_url($request_url);
    15. $url_array['query'] = isset($url_array['query']) ? '?'.$url_array['query'] : '';
    16. $postdata = http_build_query($request_array);
    17. if(function_exists("curl_init")) {
    18. $ch = curl_init($url_array['scheme']."://".$url_array['host'].$url_array['path'].$url_array['query']);
    19. curl_setopt($ch, CURLOPT_POST, 1);
    20. curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
    21. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    22. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    23. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    24. curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    25. $result = curl_exec($ch);
    26. if (curl_error($ch)) {
    27. $response[]="errormessage=".curl_errno($ch).": ".curl_error($ch);
    28. } else {
    29. $response = explode("\n",$result);
    30. }
    31. curl_close($ch);
    32. } else if(file_exists("/usr/local/bin/curl") || file_exists("/usr/bin/curl")) {
    33. $posturl = $url_array['scheme']."://".$url_array['host'].$url_array['path'].$url_array['query'];
    34. $postdata = $postdata;
    35. if (file_exists("/usr/local/bin/curl")) {
    36. $path_to_curl = "/usr/local/bin/curl";
    37. } elseif (file_exists("/usr/bin/curl")) {
    38. $path_to_curl = "/usr/bin/curl";
    39. } else {
    40. $response[] = "errormessage=Path to curl could not be determined";
    41. }
    42. if($path_to_curl) {
    43. $cmd = $path_to_curl." -m 45 -k -d \"".$postdata."\" ".$posturl;
    44. $response = array();
    45. $sys_out = -1;
    46. $temp = exec($cmd,$response,$sys_out);
    47. if($sys_out != 0) {
    48. $response[]="errormessage=curl error(".$sys_out.")";
    49. }
    50. }
    51. } else {
    52. switch ($url_array['scheme']) {
    53. case 'https':
    54. $scheme = 'ssl://';
    55. $port = 443;
    56. break;
    57. case 'http':
    58. default:
    59. $scheme = '';
    60. $port = 80;
    61. }
    62. $fp = fsockopen($scheme.$url_array['host'], $port, $errorNumber, $errorString, 45);
    63. if (!$fp) {
    64. $response[] = "errormessage=fsockopen:Failed opening http socket connection: ".$errorString." (".$errorNumber.")";
    65. } else {
    66. $requestHeader = "POST ".$url_array['path'].$url_array['query']." HTTP/1.1\r\n";
    67. $requestHeader.= "Host: ".$url_array['host']."\r\n";
    68. $requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";
    69. $requestHeader.= "Content-Length: ".strlen($postdata)."\r\n";
    70. $requestHeader.= "Connection: close\r\n\r\n";
    71. $requestHeader.= $postdata;
    72. fwrite($fp, $requestHeader);
    73. $responseHeader = "";
    74. do {
    75. $responseHeader.= fread($fp, 1);
    76. }
    77. while (!preg_match("/\\r\\n\\r\\n$/", $responseHeader) && !feof($fp));
    78. while (!feof($fp)) {
    79. $response[] = fgets($fp, 1024);
    80. }
    81. if(count($response) == 0) {
    82. $response[]=$responseHeader;
    83. }
    84. }
    85. }
    86. return implode("\n",$response);
    87. }
    88. }
    Alles anzeigen