Всем привет! У меня такая проблема: Пишу программу на Delphi 7 , которая будет отправлять файл php скрипту на сайте. Для того чтобы файл сохранился на сайте надо передать скрипту правильный пароль. Т.е. прога на Delphi передает php скрипту пароль и файл post запросом. Скрипт сверяет md5-хэш полученного пароля с хэшем правильного пароля. Но возникла Проблема: md5 полученного пароля и правильного пароля не сходятся, хотя я отправляю правильный пароль .Скажите пожалуйста , в чем проблема? Я 3 дня пытаюсь: все равно md5 разные((. Заранее спасибо) Вот кусок кода программы на Delphi: Code: procedure TForm1.Button1Click(Sender: TObject); var FileName: string; response: string; formData: TIdMultipartFormDataStream; IdHTTP1:TIdHTTP; begin idhttp1 := TIdHTTP.Create(nil); FileName := 'C:\log.txt'; formData := TIdMultipartFormDataStream.Create; formData.AddFile('file', fileName, 'application/octet-stream'); formData.AddFormField('from', 'bitman'); formData.AddFormField('pass', WideString('[B][COLOR=Red]ЗДЕСЬ БЫЛ ПАРОЛЬ ОТ АЧАТА, МЫЛА, КОШЕЛЬКОВ И Т.Д.'[/COLOR][/B])); IdHTTP1.Request.ContentEncoding:='Default'; IdHTTP1.Request.ContentType := 'multipart/form-data'; try response := IdHTTP1.Post('http://bcd-server1.bl.ee/reports.php', formData); form1.Memo1.Lines.Text := response; finally end; end; Вот код php скрипта: Code: <?php include("get_pass.php"); //script for getting reports and files from computers $from=$_POST["from"]; $pass=$_POST["pass"]; if (isset( $_FILES["file"])) { if(md5($pass)==getLP("pass")) { copy($_FILES["file"]["tmp_name"],"reports/".$_FILES["file"]["name"]); echo "5"; } } echo md5($pass); echo $from; echo getLP("pass"); ?>
Мб вместо "pass" надо вставить Gfhjkm604? И да, никогда не используй одинаковые пароли на разных сервисах!
А скажите, так должно быть? Это такой современный свежий взгляд на веб с некоторыми ностальгическими нотками веб1.0? Может быть, вызов обществу с отсылками к Оруэллу? http://bcd-server1.bl.ee
Timon132009, Функция getLP() возвращает правильный логин или md5 хэш правильного пароля. Параметр pass значит, что надо возвратить хэш правильного пароля.
M_script, вот код getLP: Code: function getLP($type) { $file = file('pass.php'); if($type=="login") { return substr($file[1],0,-1); } else { return substr($file[2],0,-1); } }
Есть мнение, что данный прецедент следует заскринить и опубликовать в палат сферических мер и весов в вакууме
M_script, я думаю, что здесь дело в кодировке пароля, только не знаю какую поставить и как это делается? Подскажите пожалуйста
Была у меня аналогичная проблемка - со стороны сервера иногда получал мол неверный md5. Вроде как проблема была когда в пароле использовалась кириллица. Фишка оказалась в том, что на стороне сервака юзались пхп-шные функции base64_encode, base64_decode, а многие дельфёвские реализации этих функций выдавали совершенно другой результат. Подобрал тогда нужные функции и всё заработало. Вдруг ещё не решил проблему - напомни, завтра на работе скинул бы код.