@שמואל4
נניח הקובץ PHP שבו הפונקציה נמצאת הוא A אם אני יקרא ל בקובץ B היא תעבוד?

ASS
-
שגיאת Login.php כבר בשימוש -
שליפת כתובת URL מתוך mysqlנראה לי שיש דרך יותר רשמית "לטמיע" סירטון מיוטיוב מאשר לעשות iframe לקישור, זה נראה לי נקודה שצריך להוסיף.
ב www.w3schools.com זה הייתה הדרך היחידה. אפשר פרטים על הדרך הנוספת?
-
שגיאת Login.php כבר בשימוש@שמואל4
אם אני מבין נכון, אז הפונקציה צריכה להיות באותו עמוד של מה שרוצים לשרש לה. -
שגיאת Login.php כבר בשימוש@שמואל4
כל מה שאני עושה את include זה בעיקר בגלל הקובץ הראשי שיש שם סקריפט מאוד ארוך,
מאחר והרבה דפים צריכים להשתמש באותו סקריפט אז אני מעדיף שיהיה קובץ אחד ראשי שכולם ישתמשו בו, ואם אני ירצה לשנות משהו בסקריפט הראשי אני יעשה את זה באחד ולא בכמה עשרות... -
שגיאת Login.php כבר בשימוש@ליבל
מכיר, אבל לא התנסתי בזה.
הקובץ מכיל את המחלקה של מ. מ פליישער
ושני משתנים של פרטי ההתחברות:$con = new connecting_to_yemot_api('07900000','1234'); $token = "07900000:1234";
-
שליפת כתובת URL מתוך mysql@ליבל
תוקן, תודה. -
שגיאת Login.php כבר בשימוש@ליבל
המבנה של הפרוייקט שלי הוא:
קובץ Login מתחבר לשרת של ימות.
קובץ ראשי שמבצע את כל הפעולות, אך הוא מוגדר עם משתנים ללא ערכים כלומר: אין לן ערכים מוחלטים משל עצמו.
ואז הקבצים האחרים בעצם מבצעים קריאה ל Login, מתחברים, ולקבצים האלה יש ערכים למשנים שבקובץ הראשי, ואז הם מבצעים קריאה לקובץ הראשי שבעצם מקבל את הערכים למשנים שלו מהקבצים האחרים.
הסיבה שזה עובד כך זה משום שיש לי צורך לבצע את אותו הסקריפט עם שינויים שונים. (שכל שינוי אמור לפעול בזמן שונה).
כשאנ מבצע קריאה ל Login בעצם הוא תפוס לקובץ אחד ואז השני לא יכול לבצע קריאה.מקווה שהצלחתי להסביר..
-
שגיאת Login.php כבר בשימוש@www אמר בשגיאת Login.php כבר בשימוש:
include_once 'C:\wamp64\www\my_php\Login.php';
אני מקבל שגיאה שלא ניתן להכריז שוב על פתיחת הקובץ...
-
שליפת כתובת URL מתוך mysqlשלום וברכה.
יש לי רשימת קישורי URL במסד נתונים של mysql, הרשימה מתעדכנת בכל פעם שעולה סרטון חדש ליוטיוב.
במקביל יש לי דף באתר שאמור למשוך את הקישורים ולהציג כל סרטון באיפרם נפרד.
הרעיון הוא שבעצם האתר מתעדכן מעצמו בכל פעם שעולה סרטון חדש לערוץ היוטיוב.
ביצעתי את זה באמצעות שילוב ה iframe בתוך לולאת ה PHP ששולפת את הנתונים.$Data_extraction = "SELECT * FROM `id`"; $mysqli_query = mysqli_query($Login, $Data_extraction); while ($Data = mysqli_fetch_array($mysqli_query)){ $Dat = $Data ["URL"]; ?> <div class="row"> <div class="column"> <iframe src="<?php echo $Dat; ?>" width="100%" height="100%"></iframe> </div> <?php }; ?>
החסרונות בשיטה הזו הם:
- זמן טעינה ארוך. (אולי)
- דף ה PHP חשוף למשתשמים.
- הסרטונים מוצגים בצורה שהסרטון החדש מופיע בסוף רשימת הסרטונים במקום בהתחלה.
האם יש שיטות אחרות או דרך לשפר את זאת?
תודה רבה.
-
הגדרת localhost עם דומייןספרייה לדוגמה:
https://www.npmjs.com/package/node-apiless-youtube-uploadזה ל Node.JS יש משהו ב PHP?
-
הגדרת localhost עם דומיין@yossiz
תודה על התשובה....
בררתי לפני כמה ימים ואסור לעשות בחול המועד, בע"ה אני איישם לאחר שמחת תורה... -
הגדרת localhost עם דומייןלאחר שבניתי אפליקציה להעלאת קבצים ליוטיוב בעזרת API, הוידאו עולה אבל בתור סרטון פרטי ונעול, הסיבה - יש צורך לאמת את האפילקציה.
בכדי לאמת אני צריך לתת לה דומייין בכדי שיהיה ניתן לבדוק כרגע היא כ localhost.שאלתי היא:
- האם זו אכן הדרך היחידה - בהתחשב שהאפליקציה היא לשימוש פרטי בלבד ומתחברת רק לחשבון יוטיוב אחד.
- אם אין דרך אחרת כיצד אני יכול להגדיר את ה localhost עם דומיין שיהיה ניתן להתחבר אליו מכל מקום.
תודה רבה.
-
בעיה ב API של youtube -
בעיה ב API של youtube -
בעיה ב API של youtube@yossiz
@odeddvir
יתכן שזה בגלל שהוא לא מקבל נתונים מהטופס?<?php // Destroy previous session data if(session_id() != '') session_destroy(); // Get file upload status if(isset($_GET['err'])){ if($_GET['err'] == 'bf'){ $errorMsg = 'Please select a video file to upload.'; }elseif($_GET['err'] == 'ue'){ $errorMsg = 'Sorry, there was an error on uploading your file.'; }elseif($_GET['err'] == 'fe'){ $errorMsg = 'Sorry, only MP4, AVI, MPEG, MPG, MOV and WMV files are allowed.'; }else{ $errorMsg = 'Some problems occurred, please try again.'; } } ?> <form method="post" enctype="multipart/form-data" action="upload.php"> <?php echo (!empty($errorMsg))?'<p class="err-msg">'.$errorMsg.'</p>':''; ?> <label for="title">Title:</label> <input type="text" name="title" value="" /> <label for="description">Description:</label> <textarea name="description" cols="20" rows="2" ></textarea> <label for="tags">Tags:</label> <input type="text" name="tags" value="" /> <label for="tags">Privacy:</label> <select name="privacy"> <option value="public">Public</option> <option value="private">Private</option> </select> <label for="file">Choose Video File:</label> <input type="file" name="file" > <input name="videoSubmit" type="submit" value="Upload"> </form>
לא מצליח להבין מדוע?
-
בעיה ב API של youtube@yossiz
@odeddvir
אוקי, קיבלתי!
אז התחלתי מחדש עם קוד יותר פשוט (בלי לאחסן את הטוקן במסד נתונים וכו)
כמופיע במדריך הזה.<?php // Include api config file require_once 'config.php'; // Include database class require_once 'DB.class.php'; // Create an object of database class $db = new DB; // If the form is submitted if(isset($_POST['videoSubmit'])){ // Video info $title = $_POST['title']; $desc = $_POST['description']; $tags = $_POST['tags']; $privacy = !empty($_POST['privacy'])?$_POST['privacy']:'public'; // Check whether file field is not empty if($_FILES["file"]["name"] != ''){ // File upload path $fileName = str_shuffle('codexworld').'-'.basename($_FILES["file"]["name"]); $filePath = "videos/".$fileName; // Check the file type $allowedTypeArr = array("video/mp4", "video/avi", "video/mpeg", "video/mpg", "video/mov", "video/wmv", "video/rm"); if(in_array($_FILES['file']['type'], $allowedTypeArr)){ // Upload file to local server if(move_uploaded_file($_FILES['file']['tmp_name'], $filePath)){ // Insert video data in the database $vdata = array( 'title' => $title, 'description' => $desc, 'tags' => $tags, 'privacy' => $privacy, 'file_name' => $fileName ); $insert = $db->insert($vdata); // Store db row id in the session $_SESSION['uploadedFileId'] = $insert; }else{ header("Location:".BASE_URL."index.php?err=ue"); exit; } }else{ header("Location:".BASE_URL."index.php?err=fe"); exit; } }else{ header('Location:'.BASE_URL.'index.php?err=bf'); exit; } } // Get uploaded video data from database $videoData = $db->getRow($_SESSION['uploadedFileId']); // Check if an auth token exists for the required scopes $tokenSessionKey = 'token-' . $client->prepareScopes(); if (isset($_GET['code'])) { if (strval($_SESSION['state']) !== strval($_GET['state'])) { die('The session state did not match.'); } $client->authenticate($_GET['code']); $_SESSION[$tokenSessionKey] = $client->getAccessToken(); header('Location: ' . REDIRECT_URL); } if (isset($_SESSION[$tokenSessionKey])) { $client->setAccessToken($_SESSION[$tokenSessionKey]); } // Check to ensure that the access token was successfully acquired. if ($client->getAccessToken()) { $htmlBody = ''; try{ // REPLACE this value with the path to the file you are uploading. $videoPath = 'videos/'.$videoData['file_name']; if(!empty($videoData['youtube_video_id'])){ // Uploaded video data $videoTitle = $videoData['title']; $videoDesc = $videoData['description']; $videoTags = $videoData['tags']; $videoId = $videoData['youtube_video_id']; }else{ // Create a snippet with title, description, tags and category ID // Create an asset resource and set its snippet metadata and type. // This example sets the video's title, description, keyword tags, and // video category. $snippet = new Google_Service_YouTube_VideoSnippet(); $snippet->setTitle($videoData['title']); $snippet->setDescription($videoData['description']); $snippet->setTags(explode(",", $videoData['tags'])); // Numeric video category. See // https://developers.google.com/youtube/v3/docs/videoCategories/list $snippet->setCategoryId("22"); // Set the video's status to "public". Valid statuses are "public", // "private" and "unlisted". $status = new Google_Service_YouTube_VideoStatus(); $status->privacyStatus = $videoData['privacy']; // Associate the snippet and status objects with a new video resource. $video = new Google_Service_YouTube_Video(); $video->setSnippet($snippet); $video->setStatus($status); // Specify the size of each chunk of data, in bytes. Set a higher value for // reliable connection as fewer chunks lead to faster uploads. Set a lower // value for better recovery on less reliable connections. $chunkSizeBytes = 1 * 1024 * 1024; // Setting the defer flag to true tells the client to return a request which can be called // with ->execute(); instead of making the API call immediately. $client->setDefer(true); // Create a request for the API's videos.insert method to create and upload the video. $insertRequest = $youtube->videos->insert("status,snippet", $video); // Create a MediaFileUpload object for resumable uploads. $media = new Google_Http_MediaFileUpload( $client, $insertRequest, 'video/*', null, true, $chunkSizeBytes ); $media->setFileSize(filesize($videoPath)); // Read the media file and upload it chunk by chunk. $status = false; $handle = fopen($videoPath, "rb"); while (!$status && !feof($handle)) { $chunk = fread($handle, $chunkSizeBytes); $status = $media->nextChunk($chunk); } fclose($handle); // If you want to make other calls after the file upload, set setDefer back to false $client->setDefer(false); // Update youtube video id to database $db->update($videoData['id'], $status['id']); // Delete video file from local server @unlink("videos/".$videoData['file_name']); // uploaded video data $videoTitle = ""; } // uploaded video embed html $youtubeURL = 'https://youtu.be/'.$videoId .'</li>'; $htmlBody .= '<li><b>Description: </b>'.$videoDesc.'</li>'; $htmlBody .= '<li><b>Tags: </b>'.$videoTags.'</li></ul>'; $htmlBody .= '<a href="logout.php">Logout</a>'; } catch (Google_Service_Exception $e) { $htmlBody .= sprintf('<p>A service error occurred: <code>%s</code></p>', htmlspecialchars($e->getMessage())); } catch (Google_Exception $e) { $htmlBody .= sprintf('<p>An client error occurred: <code>%s</code></p>', htmlspecialchars($e->getMessage())); $htmlBody .= 'Please reset session <a href="logout.php">Logout</a>'; } $_SESSION[$tokenSessionKey] = $client->getAccessToken(); } elseif (OAUTH_CLIENT_ID == '') { $htmlBody = <<<END <h3>Client Credentials Required</h3> <p> You need to set <code>\$oauthClientID</code> and <code>\$oauthClientSecret</code> before proceeding. <p> END; } else { // If the user hasn't authorized the app, initiate the OAuth flow $state = mt_rand(); $client->setState($state); $_SESSION['state'] = $state; $authUrl = $client->createAuthUrl(); $htmlBody = <<<END <h3>Authorization Required</h3> <p>You need to <a href="$authUrl">authorize access</a> before proceeding.<p> END; } ?> <!DOCTYPE html> <html> <head> <title>Upload Video to YouTube using PHP by CodexWorld</title> </head> <body> <div class="uplink"><a href echo $htmlBody; ?> </div> </body> </html>
אני מקבל שגיאה : Notice: Undefined index: uploadedFileI
כלומר זה:// Get uploaded video data from database $videoData = $db->getRow($_SESSION['uploadedFileId']);
לא מבין מה עשיתי לא נכון...
-
בעיה ב API של youtube@yossiz
קודם כל תודה על המוסר
אז אכן עשיתי כדבריך, לא כ"כ הצלחתי להבין בבירור מה הבעיה, אבל כנראה השיטה שבעל המדריך השתמש לא נתמכת או משהוא כזה...
בכל אופן ישבתי על זה 6 שעות, וזה בערך מה שהבנתי.אשמח אם מישהו מהזקנים החכמים יחכימו את העלם צעיר שכבר יושב על זה חודש...
איזה מדריך PHP נורמאלי יש בעניין. (חוץ מהמדריכים המעצבנים של יוטיוב).
עברתי על עשרות מדריכים כל אחד והבאג שלו..
ממש אודה מאוד למי שיוכל לעזור בעניין.תודה רבה..
-
בעיה ב API של youtubeאני מעוניין לפתח תוכנה שמעלה אוטומטית וידאו ליוטיוב, (כבר פיתחתי אחת דומה שמעלה לימות משיח), הקוד שלי כתוב כמו במדריך הזה: https://artisansweb.net/use-youtube-api-upload-video-youtube-channel/
של ההדרכה הנ"ל).
שבעצם יוצר טוקן שלא פג...
משום מה הקוד לא מעלה לי סרטונים ליוטיוב, פשוט לא קורה כלום בטופס של העלאה. (כמופיע
להלן הקובץ של הקוד שמעלה את הסרטון (הקריאה ל config.php זה בעצם לאחר שהקובץ config.php מקבל את הטוקן שמאוחסן במסד נתונים).<?php require_once 'config.php'; if (isset($_POST['submit'])) { $arr_data = array( 'title' => $_POST['title'], 'summary' => $_POST['summary'], 'video_path' => $_FILES['file']['tmp_name'], ); upload_video_on_youtube($arr_data); } function upload_video_on_youtube($arr_data) { $client = new Google_Client(); $db = new DB(); $arr_token = (array) $db->get_access_token(); $accessToken = array( 'access_token' => $arr_token['access_token'], 'expires_in' => $arr_token['expires_in'], ); $client->setAccessToken($accessToken); $service = new Google_Service_YouTube($client); $video = new Google_Service_YouTube_Video(); $videoSnippet = new Google_Service_YouTube_VideoSnippet(); $videoSnippet->setDescription($arr_data['summary']); $videoSnippet->setTitle($arr_data['title']); $video->setSnippet($videoSnippet); $videoStatus = new Google_Service_YouTube_VideoStatus(); $videoStatus->setPrivacyStatus('public'); $video->setStatus($videoStatus); try { $response = $service->videos->insert( 'snippet,status', $video, array( 'data' => file_get_contents($arr_data['video_path']), 'mimeType' => 'video/*', 'uploadType' => 'multipart' ) ); echo "Video uploaded successfully. Video ID is ". $response->id; } catch(Exception $e) { if( 401 == $e->getCode() ) { $refresh_token = $db->get_refersh_token(); $client = new GuzzleHttp\Client(['base_uri' => 'https://accounts.google.com']); $response = $client->request('POST', '/o/oauth2/token', [ 'form_params' => [ "grant_type" => "refresh_token", "refresh_token" => $refresh_token, "client_id" => GOOGLE_CLIENT_ID, "client_secret" => GOOGLE_CLIENT_SECRET, ], ]); $data = (array) json_decode($response->getBody()); $data['refresh_token'] = $refresh_token; $db->update_access_token(json_encode($data)); upload_video_on_youtube($arr_data); } else { //echo $e->getMessage(); //print the error just in case your video is not uploaded. } } } ?> <form method="post" enctype="multipart/form-data"> <p><input type="text" name="title" placeholder="Enter Video Title" /></p> <p><textarea name="summary" cols="30" rows="10" placeholder="Video description"></textarea></p> <p><input type="file" name="file" /></p> <input type="submit" name="submit" value="Submit" /> </form>
תודה רבה.
-
שגיאת Login.php כבר בשימוששלום לכל החברים.
אז ב"ה סיימתי את הפרוייקט הזה, תודה לכולם על העזרה והייעוץ!והנה הבעיה האחרונה
יש לי קובץ PHP שמבצע Login לשרת של ימות, ועוד הרבה קבצים שכולם מבצעים אליו קריאה באמצעות:<?php include 'C:\wamp64\www\my_php/Login.php'; ?>
הבעיה ששתי קבצים פועלים בו זמנית אני מקבל שגיאה ש Login.php כבר בשימוש, כיצד אפשר לטפל בזה?
חשבתי אולי על קוד שיפעיל אותם אחד אחד, לא כ"כ יודע איך לעשות את זה, או שיש פתרון אחר.
תודה רבה.