Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]Undefined index
Dukov
post 25.07.2017, 11:04:59
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.03.2017

Ostrzeżenie: (0%)
-----


Hej, dzisiaj mam problem z czymś takim
  1. if ($_POST['name'] != null)

wywala błąd undefined index
A to pole formularza

  1. <input type="text" name="name">


Jest ktoś w stanie to wytłumaczyć? Chyba się nie pomyliłem i do formularza odwołuje się poprzez index o nazwie atrybutu name, a nie id?
Go to the top of the page
+Quote Post
trueblue
post 25.07.2017, 11:10:22
Post #2





Grupa: Zarejestrowani
Postów: 6 800
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A jaką metodą wysyłasz formularz?


--------------------
Go to the top of the page
+Quote Post
Dukov
post 25.07.2017, 11:11:24
Post #3





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.03.2017

Ostrzeżenie: (0%)
-----


Teraz mam kolejny problem też z indexami

  1. if($_FILES['filename']['error']!=4){
  2. $avatar = fileReceive();
  3. }

Funkcja
  1. function fileReceive(){
  2. $max_size = 1024*1024;
  3. if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
  4. if ($_FILES['filename']['size'] > $max_size) {
  5. echo 'Błąd! Plik jest za duży!';
  6. }
  7. else {
  8. echo 'Odebrano plik. Początkowa nazwa: '.$_FILES['filename']['name'];
  9. echo '<br/>';
  10.  
  11. if (isset($_FILES['filename']['type'])) {
  12. echo 'Typ: '.$_FILES['filename']['type'].'<br/>';
  13. }
  14.  
  15. $strExt = substr( $_FILES['filename']['name'], strrpos( $_FILES['filename']['name'], '.' ) + 1 );
  16. echo "Rozszerzenie: ". $strExt;
  17. $len = 20;
  18. $randstring = substr(sha1(rand(1,10000)),0,$len).".jpg";
  19. echo $randstring;
  20. echo $_FILES['filename']['name'];
  21.  
  22. if ($strExt == 'jpg' || 'JPG' || 'jpeg' || 'JPEG'){
  23. move_uploaded_file($_FILES['filename']['tmp_name'],
  24. $_SERVER['DOCUMENT_ROOT'].'../avatars/'.$_FILES['filename']['name']);
  25.  
  26. }
  27. else{
  28. echo "niy!!";}
  29. }
  30. }
  31. else {
  32. echo 'Błąd przy przesyłaniu danych!';
  33. }
  34. rename('avatars/'.$_FILES['filename']['name'], 'avatars/'.$randstring);
  35. return $randstring;
  36. }

  1. <form name="regform" action="scripts/registry.php" method="post" enctype="multipart/form-data>
  2. <input type="text" name="login">
  3. <input type="password" name="pass">
  4. <input type="text" name="mail">
  5. <input type="text" name='name'>
  6. <input type="text" name="city">
  7. <textarea name="desc"></textarea>
  8. <input type="hidden" name="MAX_FILE_SIZE" value="512000" /><input type="file" name="filename">
  9. <input type="submit">
  10. </form>


Co ciekawe poszedłem tutaj po najmniejszej lini oporu, przerobiłem pod swoje potrzeby skrypt z neta, stosowałem go też na innych stronach i działał - tutaj nie chce działać. Te echa są tylko dopóki zacznie działać, żeby nie było, że tak zostanie, bo docelowo będzie Location: header i komunikat.

Ten post edytował Dukov 25.07.2017, 11:28:52
Go to the top of the page
+Quote Post
nospor
post 25.07.2017, 11:22:25
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No ale jesli ten kod odpalasz rowniez przed wyslaniem formularza to rowniez bedziesz mial ten blad. Moze pokaz caly kod, wlacznie z formularzem


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post 25.07.2017, 11:24:45
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


nawet jak wyślesz puste pole to nie będzie null tylko pusty string.

Sprawdza się przez:

  1. if(!empty($_POST['name'])) {...}
Go to the top of the page
+Quote Post
Dukov
post 25.07.2017, 11:56:42
Post #6





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.03.2017

Ostrzeżenie: (0%)
-----


@Pyton_100

POSTy działają, w skrypcie logowania też mam null, najpierw było jako isset, jak mnie pamięć nie myli i wywaliło błąd i w kodzie błędy zaproponowąło null i działa, ten skrypt też działa, problem mam z plikiem, a kodu się wstydzę jeszcze, dopóki go nie dopracuje wink.gif Ale formularz wysyłam DO tego skryptu metodą POST, więc formularz jest wysłany do skryptu i skrypt zaczyna działać, więc kod i tak się odpala PO wysłaniu formularza.

Ale proszę
  1. <?php
  2. $avatar;
  3. if ($_POST['name'] != null){
  4. $userName = $_POST['name'];
  5. }
  6. if ($_POST['city'] != null ) {
  7. $userCity = $_POST['city'];
  8. }
  9. if ($_POST['desc'] != null){
  10. $userDesc = $_POST['desc'];
  11. }
  12. $host = 'localhost';
  13. $baza = 'test';
  14. $uzytkownik = 'adam';
  15. $haslo = 'aaaaa5';
  16. if ($_POST['login'] != null || $_POST['pass'] != null || $_POST['mail'] != null) {
  17. $userLogin = $_POST['login'];
  18. $userPass = $_POST['pass'];
  19. $userMail = $_POST['mail'];
  20. $len = 20;
  21. $userID = substr(sha1(rand(1,10000)),0,$len);
  22. echo $userID;
  23. if($_FILES['filename']['error']!=4){
  24. $avatar = fileReceive();
  25. }
  26. reg();
  27.  
  28. }
  29. else
  30. {
  31. header("Location: ../reg.php?reg=emptyf");
  32. }
  33. function reg(){
  34. global $userID, $userMail, $userPass, $userLogin, $userDesc, $userCity, $userName, $avatar;
  35. try {
  36.  
  37.  
  38.  
  39. $conn = new PDO("mysql:host=$host;dbname=$baza", $uzytkownik, $haslo);
  40. $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  41. $stmt = $conn->prepare("SELECT Nazwa FROM Users WHERE Nazwa = '$userLogin'");
  42. $stmt->execute();
  43. $row = $stmt->fetch();
  44. if($row[0] <> 1){
  45. $stmt = $conn->prepare("INSERT INTO 'Users' ('ID', 'Nazwa','Haslo', 'mail','name','city', 'image', 'desc', 'activate', 'admin') VALUES ('$userID','$userLogin', '$userPass', '$userMail', '$userName', '$userCity, $avatar', '$userDesc','false','false'");
  46. $stmt->execute();
  47.  
  48. sendMail();
  49.  
  50. }
  51.  
  52. else{
  53. header("Location: ../reg.php?reg=userexists");
  54. }
  55. }
  56. catch(PDOException $e)
  57. {
  58. return 1; #brak polaczenia
  59. }
  60. }
  61.  
  62.  
  63.  
  64.  
  65. function fileReceive(){
  66. $max_size = 1024*1024;
  67. if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
  68. if ($_FILES['filename']['size'] > $max_size) {
  69. echo 'Błąd! Plik jest za duży!';
  70. }
  71. else {
  72. echo 'Odebrano plik. Początkowa nazwa: '.$_FILES['filename']['name'];
  73. echo '<br/>';
  74.  
  75. if (isset($_FILES['filename']['type'])) {
  76. echo 'Typ: '.$_FILES['filename']['type'].'<br/>';
  77. }
  78.  
  79. $strExt = substr( $_FILES['filename']['name'], strrpos( $_FILES['filename']['name'], '.' ) + 1 );
  80. echo "Rozszerzenie: ". $strExt;
  81. $len = 20;
  82. $randstring = substr(sha1(rand(1,10000)),0,$len).".jpg";
  83. echo $randstring;
  84. echo $_FILES['filename']['name'];
  85.  
  86. if ($strExt == 'jpg' || 'JPG' || 'jpeg' || 'JPEG'){
  87. move_uploaded_file($_FILES['filename']['tmp_name'],
  88. $_SERVER['DOCUMENT_ROOT'].'../avatars/'.$_FILES['filename']['name']);
  89.  
  90. }
  91. else{
  92. echo "niy!!";}
  93. }
  94. }
  95. else {
  96. echo 'Błąd przy przesyłaniu danych!';
  97. }
  98. rename('avatars/'.$_FILES['filename']['name'], 'avatars/'.$randstring);
  99. return $randstring;
  100. }
  101.  
  102. function sendMail(){
  103. $addressee = 'ajjambor912@gmail.com';
  104. @$email = $_POST['email'];
  105.  
  106. @$content = 'Name '.$_POST['username'].' Phone: '.$_POST['userphone'].' Content: '.$_POST['message'];
  107.  
  108. $header = "From: ".$_POST['email']." \nContent-Type:".
  109. ' text/plain;charset="iso-8859-2"'.
  110. "\nContent-Transfer-Encoding: 8bit";
  111. if (mail($addressee, 'Message from NAhandyman: ', $content , $header))
  112.  
  113. header('Location:index.php?send=true');
  114. else
  115. header('Location:index.php?send=false');
  116. }
  117.  
  118. ?>


Z góry zaznacze, że funkcja za wysyłanie maila, jest niegotowa, tylko skopiowana z innego skryptu, a wrzuciłem ją tam, żebym miał pogląd jak to mniej więcej było ostatecznie zrobione, tak jak nie są hasowane hasła itd, jak zacznie to działać, to będe dopracowywał powoli ten skrypt. Oczywiście większość nie działa, to szkielet, pisałem to wczoraj po nocy i chciałem sobie naszkicować, teraz go sukcesywnie poprawiam.

Ten post edytował Dukov 25.07.2017, 11:59:29
Go to the top of the page
+Quote Post
nospor
post 25.07.2017, 12:05:25
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




enctype="multipart/form-data>

Kazde rozpoczete " trzeba tez zamknac "


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Dukov
post 25.07.2017, 12:16:35
Post #8





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.03.2017

Ostrzeżenie: (0%)
-----


Zamknąłem, a efekt ten sam, póki co wykomentuje tę funkcje i poprawiam dalej, zajrzę co jakiś czas, jak ktoś znalazł rozwiązanie, najwyżej jak będę miał wszystko inne "pochytane" to wyrzucę ten warunek i funkcje i napiszę inaczej od nowa.
Go to the top of the page
+Quote Post
nospor
post 25.07.2017, 12:18:15
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To moze napisz co ci nie dziala, bo jak poki co nie widze. Widzialem ze nie dzialal ci pierwszy warunek, ktory rzekomo poprawiles. Potem napisales ze nie dziala ci co innego ale co to juz nie napisales, tylko ogolnikowo cos o indeksie. Konkrety prosze smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Dukov
post 25.07.2017, 12:32:31
Post #10





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.03.2017

Ostrzeżenie: (0%)
-----


Notice: Undefined index: filename in D:\wamp64\www\scripts\registry.php on line 23

  1. if($_FILES['filename']['error']!=4){
  2. $avatar = fileReceive();
  3. }


Linia 23 to ten warunek.

  1. <input type="hidden" name="MAX_FILE_SIZE" value="512000" /><input type="file" name="filename">


A ta linia odpowiada za odbieranie plików, pełen kod jest wyżej smile.gif
Go to the top of the page
+Quote Post
nospor
post 25.07.2017, 12:34:20
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pokaz jeszcze raz poprawiony formularz, co by miec pewnosc ze poprawiles to poprawnie wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post 25.07.2017, 12:35:55
Post #12





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Nie sprawdzasz czy !empty($_FILES) a powinieneś. błąd mówi jasno że nie ma indeksu filename ergo nie wysyłasz pliku.
Go to the top of the page
+Quote Post
Dukov
post 25.07.2017, 12:36:43
Post #13





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.03.2017

Ostrzeżenie: (0%)
-----


Proszę uprzejmie smile.gif
  1. <form name="regform" action="scripts/registry.php" method="post" enctype="multipart/form-data">
  2. <input type="text" name="login">
  3. <input type="password" name="pass">
  4. <input type="text" name="mail">
  5. <input type="text" name='name'>
  6. <input type="text" name="city">
  7. <textarea name="desc"></textarea>
  8. <input type="hidden" name="MAX_FILE_SIZE" value="512000" /><input type="file" name="filename">
  9. <input type="submit">
  10. </form>
Go to the top of the page
+Quote Post
nospor
post 25.07.2017, 12:37:30
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@Pyton jakby nie wyslal pliku to nadal by byl w $_FILES ale oznaczony jako pusty. No chyba, ze juz skleroze mam na starosc smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Dukov
post 25.07.2017, 12:41:17
Post #15





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.03.2017

Ostrzeżenie: (0%)
-----


A no właśnie, ten warunek odpowiada za sprawdzenie pliku, 4 to plik niewysłany smile.gif 3 albo 2 to niepełny plik bądź uszkodzony, a 1 albo 0 to plik wysłany poprawnie, zresztą docelowo będzie na to 0 albo 1 wywołana funkcja, a pozostałe będzie header location powrót do rejestracji i komunikat zależny od zmiennej z GET albo return jeszcze pomyślę smile.gif

EDIT Pyton ma racje i poleciał 'pomógł' smile.gif , zmieniłem ten warunek na if(!empty($_FILES)){ i działa dokładnie tak jak chcę smile.gif teraz walczę z resztą błędów smile.gif

Ten post edytował Dukov 25.07.2017, 12:48:17
Go to the top of the page
+Quote Post
Pyton_000
post 25.07.2017, 13:21:20
Post #16





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


UPLOAD_ERR_NO_FILE mówi o tym że plik został załączony do formularza ale z jakiegoś powodu nie dotarł do PHP a dokładniej jeśli tmp_name jest pusty czyli np. plik nie móg się zapisać na dysk do tmp.

Ten post edytował Pyton_000 25.07.2017, 13:22:13
Go to the top of the page
+Quote Post
Dukov
post 25.07.2017, 13:37:46
Post #17





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.03.2017

Ostrzeżenie: (0%)
-----


Powiem tak, zmieniłem na echo, już zacząłem głupieć od tego, bo znowu były problemy, ogólnie warunek nie działa, nieistotne czy plik jest załączony, czy nie warunek spełniony możesz mi powiedzieć pokrótce jak mam napisać ten warunek, żeby sprawdził, czy jest załączony plik, czy nie?

Teraz sobie musze jeszcze opis na forum zmienić.
Go to the top of the page
+Quote Post
Pyton_000
post 25.07.2017, 13:42:10
Post #18





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


- najpierw sprawdzasz czy $_FILES nie jest pusty
- potem sprawdzasz czy $_FILES['filename']['error'] nie ma błedów
- dalej lecisz normalnie
Go to the top of the page
+Quote Post
Dukov
post 25.07.2017, 13:49:28
Post #19





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.03.2017

Ostrzeżenie: (0%)
-----


Tak, ale za każdym razem (nawet jak jest pusty) to zwraca, że nie jest pusty

  1. if(!empty($_FILES['filename'])){
  2. echo "pusty";
  3. }


Obojętnie czy jest czy nie, warunek jest spełniony, tutaj chcę sprawdzić TYLKO czy jest pusty, bo czy są błędy mam w funkcji, którą chce wywołać zamiast echo "pusty";

EDIT bez indeksu efekt ten sam, sprawdzałem.

Ten post edytował Dukov 25.07.2017, 13:54:49
Go to the top of the page
+Quote Post
Pyton_000
post 25.07.2017, 13:57:15
Post #20





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Zrób sobie `var_dump($_FILES);` i będziesz wiedział co tam jest a czego nie ma przy wysłaniu pustego formularza i z plikiem/
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 22.06.2025 - 10:22