![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 9.04.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Mam problem z darmowym skryptem do hostingu zdjęć.
Skrypt jest w języku angielskim, dla swoich potrzeb jednak, tłumaczę go na polski, lecz mam problem z obsługą komunikatów w naszym języku. Poniżej przedstawię jak wygląda problem. Sprawa dotyczy sytuacji, w której np. podczas rejestracji użytkownik podaje adres email, który już zarejestrowany jest na innym koncie. Wówczas pojawia się komunikat z informacją o tej sytuacji. O ile w przypadku braku polskich liter, komunikat wyświetlany jest poprawnie. ![]() To jeśli dorzucę do niego polską literę, komunikat przerywany jest właśnie na tej literze ![]() Poniżej wklejam pierwszą połowę pliku, który wyświetla komunikat: CODE session_start(); require_once("inc/config.php"); require_once("lib/cpaint2.inc.php"); require_once ("inc/ftp.class.php"); $link = mysql_connect($db_server, $db_user, $db_password) or die("Could not connect."); mysql_select_db($db_name) or die("Could not select database."); function check_input($value) { $value = strip_tags($value); $value = mysql_real_escape_string($value); //filter all non alphanumeric characters // allows numbers, letters and spaces only $value = preg_replace("/[^0-9a-z _-]/i",'', $value); return $value; } $uname=check_input($_POST['uname']); $pass=check_input($_POST['pass']); $pass1=check_input($_POST['pass1']); $pass2=check_input($_POST['pass2']); $ugid=check_input($_POST['ugid']); $md5_pass2=md5($pass2); $r_reporterid=check_input($_POST['r_reporterid']); $r_uploaderid=check_input($_POST['r_uploaderid']); $r_timestamp=check_input($_POST['r_timestamp']); $r_imagename=check_input($_POST['r_imagename']); $r_ip=check_input($_POST['r_ip']); $md5_pass=md5($pass); $validation = $config['EmailValidation']; $d_filename=check_input($_POST['d_filename']); if(isset($_COOKIE['cookid'])){ $vid = intval($_COOKIE['cookid']); $vgid = intval($_COOKIE['cookgid']); $vname = check_input($_COOKIE['cookname']); $vpass = check_input($_COOKIE['cookpass']); $result = mysql_query("select * from users where userid='$vid' and usergid='$vgid' and username='$vname' and password='$vpass'"); if(mysql_num_rows($result) ==0) { header("Location: logout.php"); exit; } } $userid=$_SESSION['userid']; $usergid=$_SESSION['usergid']; if (!$userid || empty($userid) || $userid==""){ $userid = $_COOKIE['cookid']; $usergid = $_COOKIE['cookgid']; } function usersignup($uname,$fname,$lname,$email,$pass,$md5_pass,$validation) { global $cp, $support_email, $site_name, $server_url, $validation; $msg=""; $sql="select count(*) as total1 from users where username='$uname'"; $result=mysql_query($sql); while ($row = mysql_fetch_assoc($result)) { $total1=$row['total1']; } if($total1) { $id="uname"; $msg="Wybierz inny login."; } if($msg=="") { $sql="select count(*) as total from users where email='$email'"; $result=mysql_query($sql); while ($row = mysql_fetch_assoc($result)) { $total=$row['total']; } if($total) { $id="email"; $msg="Podany adres email jest juz zarejestrowany."; } Oraz plik config.php CODE include("db.php"); $link = mysql_connect($db_server, $db_user, $db_password) or die("Could not connect"); mysql_select_db($db_name) or die("Could not select database"); $query = "SELECT * from config"; $result = mysql_query($query) or die("Query failed"); while ($row = mysql_fetch_assoc($result)) { $config[$row['soption']]=$row['svalue']; } $site_name = $config['SiteName']; $sql="select * from users where userid='1'"; $result = mysql_query($sql) or die("Query failed."); while ($row = mysql_fetch_array($result)) { $support_email=$row['email']; } $server_url = $config['SiteUrl']; // config options $version = $config['ScriptVersion']; $uploads = $config['Uploads']; $registration = $config['MemberRegistration']; $validation = $config['EmailValidation']; $ads = $config['Advertisements']; $watermarking = $config['Watermarking']; $HotLink = $config['Hotlinking']; // thumbnail settings $dest_height = $config['ThumbHeight']; $dest_width = $config['ThumbWidth']; $server_root = $config['SiteRoot']; $server_directory = ""; $server_save_directory = $server_directory . "/images/"; // /folder/ // do not change the following variables global $server_dir; $server_dir = $server_root . $server_save_directory; $page_url = $server_url . $server_directory; $image_url = $server_url . $server_save_directory; $valid_mime_types_display = $config['Extension']; $valid_file_ext=explode(",",$config['Extension']); function getSize ($imageurl) { if ( intval(phpversion()) < 5 ) die ( 'PHP5 Required' ); $headers = get_headers($imageurl, 1); return $headers['Content-Length']; } // Convert a URL to the local file path and vice versa, convert a local file path to a URL. // this sets the sytem / or \ : strstr( PHP_OS, "WIN") ? $slash = "\\" : $slash = "/"; // This is the location of the php file that contains this // function. Usually this request is made to files/folders // down the directory structure, so the php file that // contains these functions is a good "where am i" // reference point: $WIMPY_BASE['path']['physical'] = getcwd(); $WIMPY_BASE['path']['www'] = "http://".$_SERVER['HTTP_HOST']; function url2filepath($theURL){ global $WIMPY_BASE, $slash; $AtheFile = explode ("/", $theURL); $theFileName = array_pop($AtheFile); $AwimpyPathWWW = explode ("/", $WIMPY_BASE['path']['www']); $AtheFilePath = array_values (array_diff ($AtheFile, $AwimpyPathWWW)); if($AtheFilePath){ $theFilePath = $slash.implode($slash, $AtheFilePath).$slash.$theFileName; } else { $theFilePath = implode($slash, $AtheFilePath).$slash.$theFileName; } return ($WIMPY_BASE['path']['physical'].$theFilePath); } function filepath2url ($theFilepath){ global $WIMPY_BASE, $slash; $AtheFile = explode ($slash, $theFilepath); $theFileName = array_pop($AtheFile); $AwimpyPathFILE = explode ($slash, $WIMPY_BASE['path']['physical']); $AtheFilePath = array_values (array_diff ($AtheFile, $AwimpyPathFILE)); $thFileURL = implode("/", $AtheFilePath)."/".$theFileName; return ($WIMPY_BASE['path']['www']."$thFileURL"); } ?> Pomyślałem, że problem bierze się z nieprawidłowego kodowania znaków, więc za pomocą manuala, którego znalazłem na forum, w phpMyAdmin zmieniłem kodowanie bazy na poniższe. ![]() Lecz niestety nie przyniosło to skutku. Czy jesteście w stanie powiedzieć mi co muszę zmienić i gdzie, aby komunikat z polskimi literami nie był ucinany na pierwszej polskiej literze, lecz wyświetlany w całości...? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Kodowanie nie tylko w bazie ale też w plikach musisz zmienić.
-------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 243 Pomógł: 22 Dołączył: 1.06.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Co prawda nie patrzyłem na kod, ale co nasuwa mi się na myśl to skorzystaj z tego
http://us2.php.net/manual/en/mysqli.set-charset.php |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 9.04.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Tzn...?
Co dopisać i gdzie dopisać...? Ogóle w skrypcie znajduje się plik header.php, który dołączany jest do innych podstron dzięki czemu kodowanie znaków jest prawidłowe. Nie ma go w pliku functions.php, który odpowiada za komunikaty. Jeśli chodzi o: http://us2.php.net/manual/en/mysqli.set-charset.php Niestety nie pomogło - albo coś źle zrobiłem. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 243 Pomógł: 22 Dołączył: 1.06.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Możesz spróbować dać coś takiego zaraz po podłączeniu do bazy
Zawsze możesz użyć też NotePada i zmienić kodowanie wszystkich plików na utf-8 (bez BOM) Ten post edytował muniekw 24.07.2009, 23:44:01 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 9.04.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Nie pomogło ;(
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 243 Pomógł: 22 Dołączył: 1.06.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
To weź odpal Notepada i plik w którym brak polskich znaków konwertuj na UTF-8 (bez BOM) i te dwa warunki po połączeniu z bazą zostaw
![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 9.04.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Super !
Pomogło ![]() BARDZO DZIĘKUJĘ ! Ale wytłumacz mi teraz proszę dlaczego standardowymi metodami nie dało się tego zrobić...? W czym tkwił problem...? Czy "tak po prostu jest"...? ;D |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 243 Pomógł: 22 Dołączył: 1.06.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Szczerze to kiedyś miałem podobny problem i coś kombinowałem i wyszło
![]() ![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Bo jak przeglądarka dostaje nagłówek, że znaki będą kodowane np. UTF-8 a w pliku kodujesz np. iso to jak ma wyświetlić? Wyświetla błędnie...
-------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 9.04.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze raz dzięki
![]() A temat - zamykamy ;D |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze raz dzięki ![]() A temat - zamykamy ;D Tutaj tematów nie zamykamy dlatego, iż ktoś w przyszłości mógłby mieć podobny problem. ;p Niby po co zaśmiecać forum skoro można w istniejącym temacie napisać - tylko kto się do tego stosuje... Pozdrawiam. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 04:07 |