Hej,
Har fundet min gamle chat frem.
Den betalte jeg 1.500 kr for den gang.
Men nu er jeg ved at ændre til mine nye data. Så den ikke er tilegnet en klan. Men et community. Men der er lidt problemer.
En gæst kan anmode om chat til en bruger. Men i indtastning af gæstenavnet, kommer man videre til man ikke har adgang til denne chat-session. Det skal den jo ikke give besked på.
---
//
Du er ved at åbne en gæstesamtale med brugernavn sas5
//
Dit navn: Input felt til at udfylde gæstenavn.
Derefter får jeg meddelelsen:
- echo "<div class='chatBox'><center><b>Du har ingen adgang til denne session.</b><center></div>";
index.php
- if ($_GET['member'] != '' and is_numeric($_GET['member'])) {
- echo "<div class='chatBox'>";
- // Member requested check if the member excists.
- $checkMember = mysql_query("select * from `tp_brugere` where `brugerID` = '".mysql_real_escape_string($_GET['member'])."'");
- if (mysql_num_rows($checkMember) > 0) {
-
- // Fetch the array to check member status.
- $member = mysql_fetch_array($checkMember);
- if ($member['online']) {
-
- $navn = strip_tags(mysql_real_escape_string($_POST['navn']));
- if ($navn != "" and strlen($navn) < 21) {
- // Create chat session
- $navn = "Gæst " . $navn;
- mysql_query("insert into guestchat_session (brugerID, memberName, guestIP, guestName) values ('".$member['brugerID']."', '".$member['navn']."', '".$_SERVER['REMOTE_ADDR']."', '".$navn."')");
- $newid = mysql_insert_id();
- $createdSession = true; // Dont show creation form again.
- // Done redirect to chatsession
- echo "<meta http-equiv='refresh' content='0;url=guest.php?session=" . $newid . "'>";
- }
- if (!$createdSession) {
- ?>
- <center><b>Du er ved at åbne en gæstesamtale med brugernavn <?=$member['brugernavn']?></b></center><br>
- <form action="" method="post">
- Dit navn: <input type="text" name="navn" maxlength="20" style="width:200px;"><div style="float:right;"><input type="submit" value="Kom igang" style="width:200px;"></div>
- </form>
- <?
- }
-
- } else {
- echo "<center><b>Brugeren er ikke online.</b><center>";
- }
- } else {
- echo "<center><b>Brugeren findes ikke</b><center>";
- }
- echo "</div>";
- }
- ?>
- </body>
- </html>
guest.php
- if ($_GET['session'] != '' and is_numeric($_GET['session'])) {
- $session = getSessionDataGuest(mysql_real_escape_string($_GET['session']));
- if (is_array($session)) {
- // Got valid session from current IP! Display the chat window.
- ?>
- <script type="application/javascript" src="jquery1.6.1.js"></script>
- <script>
- var status = 0;
- var lastMsgId = 0;
- $(
- function()
- {
- chatManager();
- $("[id*=msg]").keydown(function(e) {
- if (e.keyCode == 13) {
- sendMsg();
- }
- }
- );
- });
- function sendMsg() {
- text = $("[id*=msg]").val();
- if(text != '' && text != ' ') {
- text = encodeURIComponent(text);
- $("[id*=msg]").val("Sender vent venligst...").attr({disabled : "true"});
- $.post("msgHandler.php?sender=guest&session=<?=$session['sessionID']?>", "msg="+text, function (data) {
- $("[id*=msg]").val('').removeAttr("disabled").focus();
- });
- }
- }
- function chatManager() {
- if (status != 404) {
- $.post("chatManager.php?sender=guest&session=<?=$session['sessionID']?>", "lastMsgId="+lastMsgId, function (data) {
- json = $.parseJSON(data);
- if (status == 0) {
- if (json['denied']) {
- alert("Brugeren har ikke tid til at chatte.");
- status = 404;
- }
- if (json['accepted']) {
- $(".msgArea").html("");
- $("#send_controls").show();
- $(".msgArea").prepend("<br><em>Brugeren kom ind i chatten.</em>");
- $("[id*=sendButton]").removeAttr("disabled");
- $("[id*=msg]").removeAttr("disabled").focus();
- status = 1;
- }
- }
-
- if (status == 1) {
- for ( var i in json['msg'] ) {
- $(".msgArea").prepend("<b>" +json['msg'][i]['name'] + "</b> " + json['msg'][i]['msg'] + "<br>");
- }
- lastMsgId = json['lastMsgId'];
- if (json['chatEnd']) {
- alert("Brugeren lukkede chatten");
- $("#send_controls").hide();
- $(".msgArea").prepend("<em>Chatten blev afsluttet</em><br><br>");
- status = 404;
- }
- }
- });
- setTimeout("chatManager()", 1500);
- }
- }
- </script>
- <div class='chatBox msgArea'><center><b>Venter på brugerens responce</b></center></div>
- <center><a href="javascript:$.post('chatManager.php?endChat=true&session=<?=$session['sessionID']?>&part=guest');window.opener='x';window.close();" style="text-decoration: none; color:#FFF;">Afslut chatten</a></center>
- <div id="send_controls" class="chatBox"><textarea id="msg" style="width:98%;" rows="4" disabled="disabled"></textarea><input type="button" value="Send" onClick="sendMsg();" id="sendButton" style="width:100%;" disabled="disabled"></div>
- <?
- } else {
- echo "<div class='chatBox'><center><b>Du har ingen adgang til denne session.</b><center></div>";
- }
- }
- ?>
- </body>
- </html>
guestWatch.php
- if ($_SESSION['brugernavn'] == "") { die(); } // Hvis kaldet uden pålogget bruger så dø ud.
-
- if ($_GET['action'] == "denyChat") {
- // Modtaget forespørgsel om afvisning
- mysql_query("update guestchat_session set denied='1' where sessionID='".mysql_real_escape_string($_GET['session'])." and memberName='".$_SESSION['brugernavn']."'"); // Afvis chatten hvis eget af den nuværende bruger
- die(); // Action done. Dø ud
- }
-
- // Ingen action fået. Gå videre med output
- $json = array();
- $json['incomming'] = false;
-
- $get = mysql_query("select * from guestchat_session where active='1' and denied='0' and timestamp_member='0' and memberName='". $_SESSION['brugernavn'] ."'");
- while ($dat = mysql_fetch_array($get)) {
- if ($dat['timestamp_guest'] > 0) {
- if (($dat['timestamp_guest'] + $timeout) < time()) {
- mysql_query("update guestchat_session set active='0' where sessionID='".$dat['sessionID']."'"); // Chat ended by guest
- continue;
- }
- }
- $json['incomming'] = true;
- $json['chats'][] = array("id" => $dat['sessionID'], "navn" => utf8_encode($dat['guestName']));
- }
-
- echo json_encode($json);
- ?>
Men i adressebar kan jeg så se når den springer over godkendelsen af samtalen, og får beskeden man ikke er har adgang til denne session. så står sessionID=0
Når jeg kommer til udfyldelse af gæstenavn står adressen som:
index.php?member=3
3 = sas5 (brugerID).
Korrekt nok.
Efter udfyldelse: guest.php?session=0
Og besked: Du har ingen adgang til denne session.
Kan i se nogle fejl?.
tp_brugere
brugerID,brugernavn,online
online er med 0,1
0 = offline, 1 = online.
Lille demo til at anmode en chat.
- <script>
- function startChat (member) {
- newwindow=window.open('testchat/index.php?member='+member,'testchat','height=500,width=500', 'resizable=no');
- if (window.focus) {newwindow.focus()}
- return false;
- }
- </script>
-
- <?php
- $sql = mysql_query("SELECT * FROM `tp_brugere`");
- while($r = mysql_fetch_array($sql)) {
- echo ("<a onClick=\"startChat(". $r['brugerID'] .");\">". $r['brugernavn'] ."</a><br />");
- }
- ?>