Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wysylanie wiadomości do GG
Forum PHP.pl > Forum > Przedszkole
Kshyhoo
Witam. Chciałem podpiąć bramkę GG pod stronę - działa... Korzystam z gotowej klasy www2gg. W kodzie widoczne są jednak numery GG, czego chciałbym uniknąć. Do rzeczy:
formularz w pliku gg.php:
  1. <form name="" method="post" action="cpax.php?go=gg">
  2. <textarea name="tresc" class="www2gg" cols="20" rows="5"></textarea><br /><br />
  3. <select name="adresat" class="textbox" style="width:150px;">
  4. <option value=""> Wybierz adresata </option>
  5. <option value="1" >User 1</option>
  6. <option value="2" >User 2</option>
  7. </select><br /><br />
  8. <input type="submit" name="wyslij" class="button" value='Wyslij' onclick="document.getElementById('ladowanie').style.display='block'"><br /><br />
  9. <?php
  10. if ($_POST['wyslij']) {
  11. $adresaci = array('1' => 123456, '2' => 456789);
  12. $adresat = $adresaci[$_POST['adresat']];
  13. require('gg/www2gg.php');
  14. }
  15. ?>
  16. </form>

Fragment pliku www2gg.php odpowiedzialnego za wysyłanie:
  1. if ($seq = $gg->wiadomosc ($adresat, $tresc, $DODAWAJ_SPACJE_W_LINKACH))
  2. {
  3. /* statusu dostarczenia wiadomości */
  4. echo $tablica_komunikatow[$gg->status_dostarczenia ($seq)];
  5.  
  6. /* pełnego statusu adresata wiadomości */
  7. echo txt::wyswietl_status_odbiorcy ($gg->status_kontaktu[$adresat]);
  8.  
  9. /* opcjonalnie wiadomości odebrancyh z serwera o ile były jakieś */
  10. if ($pokaz_odebrane)
  11. echo txt::wyswietl_wiadomosci ($gg->wiadomosci);
  12.  
  13. } else {
  14. echo $gg->error;
  15. }

Funkcje załączone w pliku klasy-gg.inc
  1. function wyslij_wiadomosc($adresat, $tresc, $potwierdzenie = TRUE)
  2. {
  3. $tresc = txt::iso2cp($tresc);
  4. $seq = mt_rand();
  5.  
  6. $data = pack("VVVVVa".strlen($tresc)."C", GG_SEND_MSG, 0x0d + strlen($tresc), $adresat,
  7. $seq, ($potwierdzenie)?GG_CLASS_MSG:GG_CLASS_MSG | GG_CLASS_ACK, $tresc, 0);
  8. $this->Debug("Wyslano pakiet wiadomości : ".bin2hex($data), $data);
  9.  
  10. $this->status_dostarczenia[$seq] = FALSE; //zmieni sie przy otrzymaniu potwierdzenia
  11.  
  12. if (!fwrite($this->fp, $data))
  13. return FALSE;
  14.  
  15. return $seq;
  16. }

Wciąż mam tak:
Cytat
123456
01
Adresat ma byc numerkiem gadu - gadu

czyli w pliku z formularzem "widzi" tablicę a w pliku www2gg widzi tylko $_POST['adresat']
Nie chciałbym ingerować w gotowe pliki, bo w przypadku aktualizacji trzeba będzie dopisywać kod na nowo. Wolałbym przekazać z formularza w jakiś sposób w postaci zmiennej. Jakieś pomysły?
Fifi209
Pytania z serii czemu/dlaczego:
1. Numerujesz od 1
2. Przy value podajesz: 01, 02
3. Przy tablicy numery gg podajesz jako liczbę a indeks tablicy jako string?
Kshyhoo
Poprawiłem kod, bo skopiowałem w trakcie zmian... Co do pytań:
1. A dlaczego nie?
2. To poprawiłem.
3. Tego nie łapię.
Fifi209
Cytat(Kshyhoo @ 30.05.2010, 22:45:32 ) *
Poprawiłem kod, bo skopiowałem w trakcie zmian... Co do pytań:
1. A dlaczego nie?
2. To poprawiłem.
3. Tego nie łapię.

1. Ponieważ przyjęło się w językach programowaniach (z małymi wyjątkami), że numerujemy od zera.
3.

  1. array('1' => 1231231, '2' => 213123)


zamiast
  1. array(1 => 123123, 2=>asdfasdf)


Już abstrahując od tego, że string tyczy się też punktu pierwszego, gdybyś numerował od zera nie musiałbyś nadawać ręcznie indeksów.

A co do pytania - poczytaj o zasięgu zmiennych.
$_POST to tablica superglobalna? ;]
Kshyhoo
Wszystko to wiem. Mimo zastosowania wszystkich podpowiedzi, efekt jest dokładnie ten sam...

Może jeszcze raz zamieszczę (obecny) kod formularza:
  1. <form name="" method="post" action="cpax.php?go=gg">
  2. <textarea name="tresc" class="www2gg" cols="20" rows="5"></textarea><br /><br />
  3. <select name="adresat" class="textbox" style="width:150px;">
  4. <option value=""> Wybierz adresata </option>
  5. <option value="0" >User 1</option>
  6. <option value="1" >User 2</option>
  7. </select><br /><br />
  8.  
  9. if ($_POST['wyslij']) {
  10. $adresaci = array(123456,456789);
  11. $adresat = $adresaci[$_POST['adresat']];
  12. require('gg/www2gg.php');
  13. }
  14.  
  15. <input type="submit" name="wyslij" class="button" value='Wyslij' onclick="document.getElementById('ladowanie').style.display='block'"><br /><br />
  16. </form>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.